Страница 1 из 1

Cum sa ascund Start.Panel

Добавлено: Пт сен 26, 2003 15:27
AleXqwq
Am o problema, Fac o proga in Builder, su Delphi. cum sa fac asa cind apas tasta 'Windows'(codul '91')
sa nu apara panelul de optiuni (PROGRAMS, DOCUMENTS, ...).
Sau cine stie cum sa se execute un 'Event' care apare la apasarea a unei taste sau a maosului, dar fara a apasa nici o tasta, de exemplu ce functii a API windows trebuie sa se execute pentru ca sa se genereze apasarea tastei esc (apasarea fizica nu are loc).
Help please. Mersi mult.

Добавлено: Пт сен 26, 2003 20:21
Vital
Не помню точно как это делается, но на мысль натолкнуть попробую.
Тебе нужно установить 2 ловушки (hooks).
Первая должна быть направлена на сообщение WM_SYSCOMMAND, где будет проверять wParam на SC_TASKLIST. Примерно так:

Код: Выделить всё

...
if Code = HC_ACTION then begin
    if TMsg(Pointer(lParam)^).message = WM_SYSCOMMAND then
        if TMsg(Pointer(lParam)^).wParam = SC_TASKLIST then
            {Это и есть нужное сообщение ставишь сюда свой код, чтоб не допустить событие}
end;
...
С клавой этот вариант точно канает, а для мыши попробуй установить ловушку на кликание в прямоугольнике кнопки Start, это и будет вторая ловушка.
Типы ловушек
Для крысы:

Код: Выделить всё

idMouseHook := SetWindowsHookEx(WH_MOUSE, @MouseProc, HInstance,0);
Для клавы:

Код: Выделить всё

idKeyBoardHook  := SetWindowsHookEx(WH_GETMESSAGE, @KeyBoardProc, HInstance,0);
Материал расчитан на то, что ты работал с глобальными ловушками и DLL-библиотеками, иначе тебе придется проштудировать этот материал.
Подумаешь, может быть ты придумаешь вариант оптимальнее этого, такой точно должен быть, потому, что этот, я придумал по ходу того, как читал твой пост.
Пока!

Добавлено: Пн сен 29, 2003 10:35
AleXqwq
Spasiboniki za otvet, porobuiu esli poidiot.