Einzelnen Beitrag anzeigen

Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

Re: mit peekmessages keyboardqueue abrufen

  Alt 15. Jun 2005, 13:28
Hab' mal ein bisschen herumgespielt - bei mir geht's mit WH_KEYBOARD auch nicht

... aaaaaber ...

mit WH_KEYBOARD_LL geht's , und da braucht man noch nicht einmal eine DLL für.

Delphi-Quellcode:
const
  WH_KEYBOARD_LL = 13;

type
  PKbDllHookStruct = ^TKbDllHookStruct;
  TKbDllHookStruct = packed record
    vkCode: Cardinal;
    scanCode: Cardinal;
    flags: Cardinal;
    time: Cardinal;
  end;

function LLKeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  if nCode = HC_ACTION then
    with PKbDllHookStruct(lParam)^ do begin
      // ... dein Code
    end;

  Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
end;
Die Hook-Prozedur hat denselben Aufbau (nCode, wParam, lParam), aber diesmal zeigt lParam auf eine TKbDllHookStruct-Struktur. Da kannst du mit vkCode direkt den virtuellen Keycode auslesen. flags hat in den Bits 0-7 denselben Inhalt wie lParam bei WM_KEYxxx-Meldungen in den Bits 24-31 (siehe SDK-Doku).


Nachtrag: Für die, die damit etwas herumspielen möchten, habe ich ein kleines Beispielprojekt angehängt.
Angehängte Dateien
Dateityp: zip keyboardhook_134.zip (1,6 KB, 112x aufgerufen)
Volker
  Mit Zitat antworten Zitat