Aktion bei Focus ohne Timer

28/01/2009 - 15:21 von Maik Prinz | Report spam
Hallo,

gibt es eine einfache Möglichkeit, den Focus des eigenen Programms zu
überwachen? Gegenwàrtig nutze ich dafür *GetForegroundWindow* in
Verbindung mit einem Timer. Sobald ich nach der Arbeit mit anderen
Programmen wieder meine Anwendung in den Vordergrund hole, wird eine
Aktion ausgeführt.

Auf den Timer würde ich dabei gerne verzichten.
*Form_Activate()* funktioniert ja nur einmalig beim Programmstart und
für *Form_Resize()* müsste ich die Anwendung jedesmal in die Taskleiste
verkleinern, was aber in der Praxis nicht unbedingt der Fall ist.

Gibt es andere Wege oder kann ich bedenkenlos (z.B. bzgl. Performance)
den Timer permanent mit ca. 500 Millisekunden laufen lassen?


TIA, Maik
Innerhalb eines jeden komplexen und unbrauchbaren
Programms befindet sich eine nützliche Routine.
 

Lesen sie die antworten

#1 Harald M. Genauck
28/01/2009 - 15:41 | Warnen spam
Hallo Maik,

gibt es eine einfache Möglichkeit, den Focus des eigenen Programms zu
überwachen? Gegenwàrtig nutze ich dafür *GetForegroundWindow* in
Verbindung mit einem Timer. Sobald ich nach der Arbeit mit anderen
Programmen wieder meine Anwendung in den Vordergrund hole, wird eine
Aktion ausgeführt.

Auf den Timer würde ich dabei gerne verzichten.
*Form_Activate()* funktioniert ja nur einmalig beim Programmstart und
für *Form_Resize()* müsste ich die Anwendung jedesmal in die
Taskleiste
verkleinern, was aber in der Praxis nicht unbedingt der Fall ist.

Gibt es andere Wege oder kann ich bedenkenlos (z.B. bzgl.
Performance)
den Timer permanent mit ca. 500 Millisekunden laufen lassen?



Wenn Du mit der Lösung zufrieden bist, kannst Du es auch dabei
belassen. Unangenehme Seiteneffekte wüsste ich keine. Der kurze
Timer-Tick und die Prüfung auf das Vordergrundfenster sollte einen in
den letzten 10, 15 Jahren gebauten Rechner nicht merkbar belasten.

Alternativ könntest Du das Forms subclassen und etwa die Message
WM_ACTIVATEAPP abfangen. Das ist aber erheblich aufwàndiger und macht
Deine Anwendung nicht unbedingt stabiler.


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Herausgeber)

Ähnliche fragen