Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi HotKey und SetFocus (https://www.delphipraxis.net/109473-hotkey-und-setfocus.html)

Nils_13 2. Mär 2008 10:47


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;

TonyR 2. Mär 2008 11:45

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.

Nils_13 2. Mär 2008 12:34

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;

Der.Kaktus 2. Mär 2008 13:09

Re: HotKey und SetFocus
 
Hallo,
versuchs mal mit
Delphi-Quellcode:
setActiveWindow(Application.Handle);
vorm Focus setzen.

TonyR 2. Mär 2008 14:30

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!?

Nils_13 3. Mär 2008 20:52

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 ?

TonyR 3. Mär 2008 21:33

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 -.-

Nils_13 4. Mär 2008 16:16

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):

Nils_13 16. Mär 2008 10:04

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