
10.02.2013, 20:29
|
Прохожий
|
|
Регистрация: 03.11.2012
Сообщения: 5
Репутация: 10
|
|
Глобальный хук и 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;
|