Einzelnen Beitrag anzeigen

Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Globales Hotkey gehalten?, sowas wie WM_KEYDOWN

  Alt 10. Sep 2008, 17:37
Zitat von toms:
Hallo,

Du könntest z.B in einem Timer GetAsyncKeyState aufrufen und überprüfen, ob die Hotkey-Taste noch gedrückt wird.
Guter Vorschlag aber es gibt ein Problem bei GetAsyncKeyState:

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.
  Mit Zitat antworten Zitat