Die CallBack-Funktion fängt nur die Tastenkombination PageUp/PageDown ab. Deshalb TCode1 := 34 und TCode2 := 33.
Hier der Code:
Code:
{Abhandeln von Tasteneingaben}
function CallBackDelHook(Code:Integer; wParam:WPARAM; lParam:LPARAM): LRESULT; stdcall;
var SendStr : string;
begin
if code = HC_ACTION then
begin
if (wParam = WM_KEYDOWN) and (Zwei = 0) then
begin
Erster := PKBDLLHookInfo(lParam).vkCode;
Zwei := 1;
end;
if (wParam = WM_KEYDOWN) and (Zwei = 1) then
begin
if PKBDLLHookInfo(lParam).vkCode <> Erster then
begin
Zweiter := PKBDLLHookInfo(lParam).vkCode;
Zwei := 2;
end;
end;
if (wParam = WM_KEYUP) and (Zwei <> 2) then
Zwei := 0;
if (wParam = WM_KEYUP) and (Zwei = 2) then
begin
Zwei := 0;
SendStr := 'AMTTHook ' + format('%3d', [Erster]) + '¦' + format('%3d', [Zweiter]);
if ((Erster = TCode1) and (Zweiter = TCode2)) or ((Erster = TCode2) and (Zweiter = TCode1)) then
begin
AssignFile(filno,Pfad + 'AMTest.log');
Append(filno);
Writeln(filno, TimeToStr(Now) + ' ' + SendStr);
CloseFile(filno);
end;
end;
end;
Result := CallNextHookEx(HookTastatur, Code, wParam, lParam)
end;
Auch da gilt: ist eine Test-Variante. Normalerweise würde der SendStr nicht in eine Datei geschrieben sondern über
TCP/
IP (
Indy) zusammen mit ein paar weiteren Angaben an ein Steuerungsprogramm im Netz übermittelt.