Hallo, ich habe einen kleinen Hook aus einem Tutorial nach gebaut und nun würde ich gerne auch Tasten regaieren.
Also, ich injecte die Hook
Dll, drücke eine Taste und anschließend soll ein Meldungsfenster kommen. Das klappt auch schon sehr gut, allerdings
denke ich, das der Code viel zu lang ist.
Aber genug geredet. Hier der Code
Delphi-Quellcode:
library Hook;
uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
StdCtrls;
var
HookHandle: Cardinal = 0;
WindowHandle: Cardinal = 0;
function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM):
LRESULT; stdcall;
begin
Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
case nCode < 0 of
TRUE: exit;
FALSE:
begin
if GetAsyncKeyState($41) < 0 then
showmessage('A gedrückt');
if GetAsyncKeyState($42) < 0 then
showmessage('B gedrückt');
if GetAsyncKeyState($43) < 0 then
showmessage('C wurde gedrückt');
if GetAsyncKeyState($44) < 0 then
showmessage('D wurde gedrückt');
if GetAsyncKeyState($45) < 0 then
showmessage('E wurde gedrückt');
if GetAsyncKeyState($46) < 0 then
showmessage('F wurde gedrückt');
if GetAsyncKeyState($47) < 0 then
showmessage('G gedrückt');
if GetAsyncKeyState($48) < 0 then
showmessage('H gedrückt');
if GetAsyncKeyState($49) < 0 then
showmessage('I wurde gedrückt');
if GetAsyncKeyState($4A) < 0 then
showmessage('J wurde gedrückt');
if GetAsyncKeyState($4B) < 0 then
showmessage('K wurde gedrückt');
if GetAsyncKeyState($4C) < 0 then
showmessage('L wurde gedrückt');
if GetAsyncKeyState($4D) < 0 then
showmessage('M gedrückt');
if GetAsyncKeyState($4E) < 0 then
showmessage('N gedrückt');
if GetAsyncKeyState($4F) < 0 then
showmessage('O wurde gedrückt');
if GetAsyncKeyState($50) < 0 then
showmessage('P wurde gedrückt');
if GetAsyncKeyState($51) < 0 then
showmessage('Q wurde gedrückt');
if GetAsyncKeyState($52) < 0 then
showmessage('R wurde gedrückt');
if GetAsyncKeyState($53) < 0 then
showmessage('S gedrückt');
if GetAsyncKeyState($54) < 0 then
showmessage('T gedrückt');
if GetAsyncKeyState($55) < 0 then
showmessage('U wurde gedrückt');
if GetAsyncKeyState($56) < 0 then
showmessage('V wurde gedrückt');
if GetAsyncKeyState($57) < 0 then
showmessage('W wurde gedrückt');
if GetAsyncKeyState($58) < 0 then
showmessage('X wurde gedrückt');
if GetAsyncKeyState($59) < 0 then
showmessage('Y wurde gedrückt');
if GetAsyncKeyState($5A) < 0 then
showmessage('Z wurde gedrückt');
end;
end;
end;
function InstallHook(Hwnd: Cardinal): Boolean; stdcall;
begin
Result := False;
if HookHandle = 0 then begin
HookHandle := SetWindowsHookEx(WH_KEYBOARD, @KeyboardHookProc,
HInstance, 0);
WindowHandle := Hwnd;
Result := TRUE;
end;
end;
function UninstallHook: Boolean; stdcall;
begin
Result := UnhookWindowsHookEx(HookHandle);
HookHandle := 0;
end;
exports
InstallHook,
UninstallHook;
end.
Ich seh mit den Parametern noch nicht ganz durch. was bedeutet lparam und wparam?
Ich denke mal das könnte man eleganter gestalten, nur ich weiß ebend nicht wie