![]() |
Re: mit peekmessages keyboardqueue abrufen
Liste der Anhänge anzeigen (Anzahl: 1)
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:
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).
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; Nachtrag: Für die, die damit etwas herumspielen möchten, habe ich ein kleines Beispielprojekt angehängt. |
Re: mit peekmessages keyboardqueue abrufen
DANKE!
das ist es! es funktioniert wunderbar! aber wohl nur unter W200/XP :| naja, was solls. ist ja auch nichts sicherheitskritisches. |
Re: mit peekmessages keyboardqueue abrufen
Die Basisinfo habe ich
![]() Da steht übrigens auch, dass ein globaler Hook mit WH_KEYBOARD (ohne _LL) unter Windows 9x sehr wohl gehen soll, ohne dass die Routine in einer DLL liegt. Verifizieren kann ich das aber mangels Installation nicht. Das würde aber immer noch nicht dagegen helfen, dass man mit dem normalen Hook nur den eigenen Prozess überwachen kann, obwohl man ihn als globalen Hook installiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz