Einzelnen Beitrag anzeigen

blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#1

Get Last Active Window

  Alt 22. Okt 2016, 10:52
Hallo!

Ich hab ein TrayIcon mit dem ich meine Anwendung minimieren bzw wieder aktivieren möchte. Das bedeutet, wenn die Anwendung minimiert wird, wird sie "gerestored" und aktiviert. Ist die Anwendung allerdings schon "gerestored" dann soll sie nur dann minimiert werden, wenn sie gerade aktiv ist, sonst soll sie aktiviert werden (denn es kann ja auch sein sie befindet sich hinter einem anderen Fenster).

Das Problem ist jetzt jedoch, sobald ich auf das TrayIcon klicke, wird die TaskBar aktiviert und es reicht jetzt nicht aus zu schauen welches Fenster aktiviert ist, sondern ich muss herausfinden, welches Fenster vor der TaskBar aktiviert war.

Deshalb benutze ich GetForegroundWindow und arbeite mich dann in der Z-Order solange durch, bis ich ein sichtbares Fenster finde, das nicht die TaskBar ist.

Hier stoße ich jetzt aber auf ein weiteres Problem, denn TopMost-Fenster stehen immer höher in der Z-Order. Im Moment mache ich es so, dass ich das erste TopMost-Fenster und das erste Nicht-TopMost-Fenster nehme (das nicht die TaskBar ist) und wenn eines der beiden mein gesuchtes Fenster ist, dann gehe ich davon aus, dass dieses zuvor aktiv war. Leider komme ich hier aber nicht weiter und kann nur raten. Denn ob nun das TopMost- oder das Nicht-TopMost-Fenster zuvor aktiv war, kann ich aus der Z-Order nicht herauslesen.

Ich benötige mehr/andere Informationen, und irgendwo muss das auch gespeichert sein, denn Windows weiß ja auch welches Fenster als nächstes aktiviert wird (Siehe Alt+Tab). Allerdings finde ich hierzu nichts.

Kann mir vielleicht jemand weiterhelfen?

Mit freundlichen Grüßen
blablab
  Mit Zitat antworten Zitat