|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Глобальный хук и WM_KEYUP
Здравствуйте! Все таки решился использовать dll для хука, только пожалуйста помогите разобраться коде данной функции, не могу его переделать чтоб хук реагировал только при отпускании (KeyUP) клавиши:
Код:
function KeyHookFunc(Code, VirtualKey, KeyStroke: integer): LRESULT; stdcall; var msgl: PEVENTMSG; begin Result:=0; if Code=HC_NOREMOVE then Exit; Result:=CallNextHookEx(hK,Code,VirtualKey,KeyStroke); if Code<0 then Exit; if (Code=HC_ACTION) then begin msgl := Pointer(KeyStroke); // Без этих двух строчек функция работает if msgl.message = WM_KEYUP then // идеальною, но надо чтоб хук реагировал только begin // на отпускание клавиш. П О М О Г И Т Е ! if((KeyStroke and (1 shl 30))<>0) then if not IsWindow(hA) then begin hM:=OpenFileMapping(FILE_MAP_WRITE,False,'MyHookMap'); Hr:=MapViewOfFile(hM,FILE_MAP_WRITE,0,0,0); if Hr<>nil then hA:=Hr.AppHnd; end; if ((KeyStroke and (1 shl 30))<>0) then begin SendMessage(hA, WM_USER+2008, VirtualKey , KeyStroke {GetFocus}); end; end; end; end; |
#2
|
||||
|
||||
Код:
LRESULT CALLBACK KeyboardProc( int code, // hook code WPARAM wParam, // virtual-key code LPARAM lParam // keystroke-message information ); Цитата:
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
NumLock, спасибо конечно за быстрый ответ, но я уже читал про это... вот только как мне в данной функции реагировать только на отпускание клавиши? Можно примерчик?...
|
#4
|
||||
|
||||
Код:
if (KeyStroke and $80000000 <> 0) then Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
centuriy (11.02.2013)
|
#5
|
|||
|
|||
NumLock, Спасибо! вместо условия
Код:
if ((KeyStroke and (1 shl 30))<>0) then Код:
if (KeyStroke and $80000000 <> 0) then ps. я так понял условие Код:
if ((KeyStroke and (1 shl 30))<>0) then |
#6
|
||||
|
||||
ты не тот бит проверял, на 1 ошибся:
1 shl 30 = $40000000, а надо $80000000 в маске Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
centuriy (11.02.2013)
|