![]() |
Globales Hotkey gehalten?, sowas wie WM_KEYDOWN
Hi,
ich hab ein Programm, dass mitbekommen soll, ob ein Hotkey gedrückt gehalten wird. Wird der Hotkey gedrückt, dann wird diese Code ausgeführt:
Delphi-Quellcode:
Das Programm soll ein Form so lange anzeigen wie das Hotkey gedrückt gehalten wird.
// WM_HOTKEY Hotkey Handler
procedure TForm1.WMHotKey(var Msg: TWMHotKey); begin if Msg.HotKey = Hotkey_id then begin //... end; end; und noch eine Frage. Die Struktur von TWMHotKey sieht so aus:
Delphi-Quellcode:
Aber nirgends ist dokumentiert was man mit Msg, Unused oder Result machen kann :/
TWMHotKey = packed record
Msg: Cardinal; HotKey: Longint; Unused: Longint; Result: Longint; end; |
Re: Globales Hotkey gehalten?, sowas wie WM_KEYDOWN
Hallo,
Du könntest z.B in einem Timer GetAsyncKeyState aufrufen und überprüfen, ob die Hotkey-Taste noch gedrückt wird. |
Re: Globales Hotkey gehalten?, sowas wie WM_KEYDOWN
Zitat:
The return value is zero if a window in another thread or process currently has the keyboard focus. Mein Form soll wenn es erscheint den Fokus nicht haben weswegen ich es mit der Funktion nicht mehr bestimmen könnte. Habe im Moment einen Workaround eingebaut: Wenn der Hotkey gedrückt wird, dann wird ein Timmer aktiviert (800 Millisekunden). Die Hotkey-Funktion wird wenn man die Taste gedrückt hält oft hintereinander aufgerufen und bei jedem Aufruf, wird der Timer deaktiviert und wieder aktiviert. So erreicht der Timer nie die Ausführung seines Events da er solange der Hotkey gedrückt ist, zurückgesetzt wird. Wenn der Hotkey jedoch für ca. 800 Millisekunden nicht berührt wurde, dann wird die Timer-Funktion abgefeuert und das Fenster wieder versteckt. |
Re: Globales Hotkey gehalten?, sowas wie WM_KEYDOWN
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 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