Einzelnen Beitrag anzeigen

hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#3

AW: Start eines Keyboard-Hooks aus einem Thread

  Alt 10. Sep 2012, 08:42
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.
Heinz Schneider
  Mit Zitat antworten Zitat