2009-06-27 10 views
0

Ich würde gerne wissen, ob es möglich ist zu wissen, ob eine externe Anwendung ein Fenster hat, das auf der Taskleiste angezeigt wird. Ich habe ein Programm, das manchmal eine Fehlermeldung anzeigt und es in der Taskleiste angezeigt wird. Wenn ich die Nachricht "schließe", wird sie unsichtbar, aber von dem, was ich gesehen habe, existiert sie noch. Die einzige Möglichkeit für mich zu erkennen, ob dieses Fenster sichtbar und somit "anklickbar" ist, ist zu überprüfen, ob es in der Taskleiste angezeigt wird oder nicht.(Win API) Überprüfen Sie, ob ein externes Anwendungsfenster in der Taskleiste ist

Wie kann ich das tun?

Dank

+0

Vielleicht, wenn ich nach WS_VISIBLE suche, wird es auch funktionieren, ich weiß es nicht? –

Antwort

0

Erster Einsatz Spion ++ (mit Visual Studio ausgeliefert) Klassennamen, um herauszufinden, Fensternamen und Fenster-Hierarchie. Tipp: Wenn die Fehlermeldung auf dem Bildschirm angezeigt wird, führen Sie Spy ++ aus, drücken Sie Alt + F3, dann Alt + D, drohen Sie das Finder-Tool auf das Fehlermeldungsfenster und drücken Sie OK.

Wenn das Fenster auf der obersten Ebene liegt (dh das übergeordnete Objekt ist der Desktop), verwenden Sie FindWindow API.

Wenn das Fenster nicht die oberste Ebene ist (dh das übergeordnete Fenster ist ein anderes Fenster), suchen Sie zunächst mithilfe von FindWindow das Hauptfenster und suchen Sie dann (möglicherweise rekursiv) mit FindWindowEx nach dem entsprechenden Fenster.

0

Die dokumentierte COM-Schnittstelle zum Verwalten der Taskleiste ist ITaskbarList, aber Sie können nur Schaltflächen hinzufügen/löschen, Sie können keine vorhandenen Schaltflächen abrufen.

Also, haben Sie drei Möglichkeiten:

A) Gehen Sie in undokumentierten Land, finden Sie die Taskleiste und seine untergeordneten Registerkarte oder in der Symbolleiste (von 2000 bis XP geändert) und Blick auf seine pro Positionsdaten ohne Papiere (IIRC gibt ist eine offene Änderungstaskleiste Schaltfläche, um App-Quelle gibt, mit dieser Info)

B) über die Stile des Fensters Sie sorgen prüfen (WS_VISIBLE und (kein Eigentümer oder WS_EX_APPWINDOW) und nicht WS_EX_TOOLWINDOW) oder etwas in diese Richtung

C) Haken/Unterklasse der gebrochenen Anwendung