Ich weiss zwar net wofür du das brauchst, aber versuchs mal mit nem einfachen Keyboardhook.
Delphi-Quellcode:
// Keyboard Hook
const
WH_KEYBOARD_LL = 13;
var
HOOK: HHOOK;
function LLKeyboardProc(nCode: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
Result:= CallNextHookEx(HOOK, nCode, wParam, lParam);
case wParam of
WM_KEYDOWN,
WM_SYSKEYDOWN: begin
Form1.i:= Form1.i + 1;
Form1.statictext1.Caption:= format('Zahl: %d', [Form1.i]);
end;
WM_KEYUP : begin
Form1.i:= 0;
Form1.statictext1.Caption:= format('Zahl: %d', [Form1.i]);
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HOOK:= SetWindowsHookEx(WH_KEYBOARD_LL, LLKeyboardProc, hinstance, 0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if HOOK <> 0 then UnhookWindowsHookEx(HOOK);
end;
Aber bedenke das der Hook Programmübergreifend ist. Wenn du die Tasten nur innerhalb deines Programms auwerten möchtest, musst du prüfen ob dein Programm aktuell den Focus hat.
[edit] jetzt sollte es passen