![]() |
Problem mit keybd_event in Verbindung mit Hotkey
Hallo,
ich habe ein Problem mit einem emulierten Tastendruck, der durch einen globalen Hotkey ausgelöst werden soll. Der Hotkey funktioniert, ich denke aber, dass das KeyboardEvent an die falsche Anwendung geht. Mein Programm hat kein sichtbares Fenster, scheint aber doch irgendwie den Eingabefocus zu ändern.
Delphi-Quellcode:
Wenn ich das showmessage aufrufe, dann funktioniert es. Aber ich möchte ja nicht bei jedem shortcut bestätigen müssen.
Procedure TfrmKeyMakro.WMHotKey(Var Message: TMessage);
Begin If Message.wParam = HotKeyID Then Begin //showmessage('OK'); keybd_event(55, Lo(MapVirtualKey(55, 0)), 0, 0); keybd_event(55, Lo(MapVirtualKey(55, 0)), KEYEVENTF_KEYUP, 0); End; End; Kann da wer helfen? Gruß BBB |
Re: Problem mit keybd_event in Verbindung mit Hotkey
Habe nun eine Lösung gefunden:
Delphi-Quellcode:
So funzt es. Es scheint also so, als würde das aktive Fenster deaktiviert.
Procedure TfrmKeyMakro.WMHotKey(Var Message: TMessage);
Begin If Message.wParam = HotKeyID Then Begin SetActiveWindow(GetForegroundWindow); Sleep(150); keybd_event(55, Lo(MapVirtualKey(55, 0)), 0, 0); keybd_event(55, Lo(MapVirtualKey(55, 0)), KEYEVENTF_KEYUP, 0); End; End; Nun muss ich nur noch hoffen, dass das slepp(150) in allen Fällen ausreicht... |
Re: Problem mit keybd_event in Verbindung mit Hotkey
Das der den Fokus aufgrund des Hotkeys verliert, kann ich mir ja fast nicht vorstellen.
Aber zu deinem Problem mit Sleep(X): Prüf doch in einer Schleife mit timeout auf GetActiveWindow. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:59 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