![]() |
HotKey und SetFocus
Hi,
mein Programm ist bei Start unsichtbar. Wenn ich einen HotKey drücke, soll das Programm erscheinen und der Fokus auf das Programm gerichtet sein. Wenn ich das Programm aus Delphi heraus ausführe und den entsprechenden HotKey drücke, wird es fokusiert. Mache ich es hingegen via Explorer/Autostart, ist das Fenster nicht fokusiert. Eine Idee warum ?
Delphi-Quellcode:
procedure TfrmMain.FormShow(Sender: TObject);
begin ShowWindow(Application.Handle, SW_HIDE); end; procedure TfrmMain.WMHotKey(var Message : TMessage); begin if Message.wParam = HotKeyID then if Visible then Hide else begin Show; SetFocus; end; end; |
Re: HotKey und SetFocus
nicht fokussiert oder gar nicht angezeigt (also ist es in der Taskleiste?) ?
Edit: wenn das Fenster.visible:=true ist, würde ja auch application.restore helfen. |
Re: HotKey und SetFocus
Das Programm wird beabsichtigt nicht in der Taskleiste angezeigt.
Meinst du das so ? Aus Delphi heraus funktioniert es, aus dem Explorer wieder nicht.
Delphi-Quellcode:
procedure TfrmMain.WMHotKey(var Message : TMessage);
begin if Message.wParam = HotKeyID then if Visible then Hide else begin Show; Application.Restore; end; end; |
Re: HotKey und SetFocus
Hallo,
versuchs mal mit
Delphi-Quellcode:
vorm Focus setzen.
setActiveWindow(Application.Handle);
|
Re: HotKey und SetFocus
Wie das mit Hotkey geht weiß ich jetz nicht, aber ich hab das, was passiert, wenn der hotkey gedrückt wird und das Fenster HID(-DEN-)E ist in einen Timer getan ... das Programm mit "Showmainform:=false" gestartet und bei mir funktioniert es aus Delphi sowie vom Explorer aus wunderbar.
Vielleicht liegt es irgendwie an doppelten Aufruf der HotKey-Procedure!? |
Re: HotKey und SetFocus
Es ist kein doppelter Aufruf. Ich dachte selbst im Überfliegen, zur Zusammenstellung des oben geposteten Codes, es hinge damit zusammen, aber der Aufruf in OnShow lässt das Programm aus der Taskleiste verschwinden. Trotzdem nahm ich ihn kurz raus und es änderte sich nichts. Was genau meinst du mit dem Timer ?
|
Re: HotKey und SetFocus
Liste der Anhänge anzeigen (Anzahl: 1)
Pass auf ->
funktioniert bei mir einwandfrei! Ich hab das aber eben nicht mit Hotkey gemacht, sondern nur mit Timer, wirste sehen. Wenn das bei dir ausm Explorer auch nicht funktioniert weiß ich auch nicht -.- |
Re: HotKey und SetFocus
Liste der Anhänge anzeigen (Anzahl: 1)
Deins funktioniert. Anstelle vom Timer Hotkey und es klappt nicht mehr (dein Projekt umgebaut):
|
Re: HotKey und SetFocus
Ich konnte den letzten Beitrag logischerweise nicht mehr editieren und möchte aber für die Suche die Lösung für das Problem bereitstellen:
Delphi-Quellcode:
procedure TfrmMain.WMHotKey(var Message : TMessage);
begin if Message.wParam = HotKeyID then if Visible then Hide else begin Show; SetForeGroundWindow(Handle); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 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