Wie kann ich prüfen ob ein neues Fenster existiert?
Prüfen ob neue Fenster existiert
-
- [ offen ]
-
Magnus -
16. Oktober 2009 um 16:10 -
Geschlossen -
Erledigt
-
-
If WinExists("Titel") Then
MsgBox(0,"","Jap, ist vorhanden")
Else
MsgBox(0,"","Nee, gibts net")
Endif -
Ich meine das ich eine WinList habe und das dann geprüft werden soll, ob ein neues existiert.
-
Wenn es dir reicht, dir Anzahl der Fenster zu vergleichen, vergleich einfach bei den 2 Arrays von WinList() den Wert bei [0][0], das ist die Anzahl.
-
Du könntest mit 'WinList()' eine Liste mit allen Fenstern erstellen und nach der Zeit X eine 2. Liste und dann gucken ob es die Elemente aus der 1. Liste auch in der 2. gibt. Gibt es das Element in der 1. und 2. Liste, dann löscht du das Element aus der 1. und 2. Liste, wenn nicht machst du nichts. Wenn du das mit allen Elementen gemacht hast dürfte die 1. Liste alle Fenster enthalten die es nichtmehr gibt und die 2. Liste enthält alle Fenster die neu hinzugekommen sind.
Ich habe das noch nicht getestet, aber dürfte laufen - nach meiner Logik.Liebe Grüße und viel Glücl
-
Das Problem, dass es dann gibt, ist allerdings, das viele Programme nunmal "namelose" Fenster haben, und die werden ja auch gelistet. Das könnte dann Probleme beim vergleichen geben, und falls ein Fenstername sich ändert, wird das als "Ein Fenster weg --> ein neues Fenster da" gewertet, man sollte also eher die HWNDs vergleichen.
-
Und wie soll das gehen?
-
Man muss doch nichtmal die hwnds vergleichen.
http://www.autoit.de/dokumentation/functions/WinList.htmman beachte die Funktion IsVisible() im beispiel.
Das sollte doch als denkanstoß genügen ? -
Nein, leider nicht.
-
dieses beispiel gibt dir ein array aus mit den handles aller sichtbaren fenster:
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
Global $winlist, $sichtbareFenster[1]
$winlist = WinList()For $i = 1 To $winlist[0][0]
[/autoit] [autoit][/autoit] [autoit]
If IsVisible($winlist[$i][1]) Then
_ArrayAdd($sichtbareFenster, $winlist[$i][1])
$sichtbareFenster[0] = UBound($sichtbareFenster) - 1
EndIf
Next_ArrayDisplay($sichtbareFenster)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func IsVisible($handle) ;Überprüfung auf Sichtbarkeit der Fenster
[/autoit]
If BitAnd( WinGetState($handle), 2 ) Then
Return 1
Else
Return 0
EndIf
EndFunc