StatusBarWait

Wartet, bis die Statusleiste eines Fensters eine bestimmte Zeichenkette enthält.

StatusBarWait , Leistentext, Sekunden, Bereichsnummer, Fenstertitel, Fenstertext, Intervall, Titelausnahme, Textausnahme

Parameter

Leistentext

Der Text oder Teiltext, auf den der Befehl warten soll. Fehlt dieser Parameter oder ist er leer, wird gewartet, bis die Statusleiste leer ist. Der Text unterscheidet zwischen Groß- und Kleinschreibung. Das Übereinstimmungsverhalten wird per SetTitleMatchMode bestimmt, ähnlich wie bei Fenstertitel unten.

Um stattdessen zu warten, bis sich der Text des Balkens ändert, nutzt man entweder StatusBarGetText in einer Schleife oder das RegEx-Beispiel weiter unten.

Sekunden

Die Dauer in Sekunden (kann ein Dezimalpunkt enthalten oder ein Ausdruck sein), die gewartet werden soll. Ist die Zeit abgelaufen, wird ErrorLevel auf 1 gesetzt. Fehlt dieser Parameter oder ist er leer, wird unendlich lang gewartet. Die Angabe von 0 ist das gleiche wie, als würde man 0.5 angeben.

Bereichsnummer

Die Nummer des Leistenbereichs, dessen Text abgerufen werden soll (kann auch ein Ausdruck sein). Fehlt dieser Parameter oder ist er leer, gilt standardmäßig 1, das der meist interessanteste Bereich ist.

Fenstertitel

Der Titel oder andere Möglichkeiten zum Identifizieren des Zielfensters. Weitere Informationen finden Sie auf der Seite Fenstertitel-Parameter & Zuletzt Gefundenes Fenster.

Fenstertext

Eine Zeichenkette, die in einem der Textelemente des Zielfensters enthalten ist (eventuell vorhandene Textelemente können mit dem mitgelieferten Windows Spy Tool aufgedeckt werden). Versteckte Textelemente werden nur erkannt, wenn DetectHiddenText eingeschaltet ist.

Intervall

Wie oft die Statusleiste überprüft werden soll, während der Befehl wartet (in Millisekunden), das auch ein Ausdruck sein kann. 50 ist Standard.

Titelausnahme

Ignoriert Fenster, deren Titel diesen Wert enthalten.

Textausnahme

Ignoriert Fenster, deren Textelemente diesen Wert enthalten.

ErrorLevel

[v1.1.04+]: Dieser Befehl ist in der Lage, eine Ausnahme auszulösen, wenn er nicht auf die Statusleiste zugreifen konnte. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird auf 1 gesetzt, wenn der Befehl das Zeitlimit überschritten hat, bevor eine Übereinstimmung in der Statusleiste gefunden werden konnte. Es wird auf 2 gesetzt, wenn StatusBarWait nicht auf die Statusleiste zugreifen kann. Es wird auf 0 gesetzt, wenn eine Übereinstimmung gefunden wird.

Bemerkungen

StatusBarWait versucht, die erste Standard-Statusleiste eines Fensters zu lesen (typisches Steuerelement von Microsoft: msctls_statusbar32). Einige Programme verwenden ihre eigenen Statusleisten oder spezielle Versionen des Microsoft-Steuerelements. Solche Leisten werden nicht unterstützt.

Anstatt StatusBarGetText in einer Schleife zu verwenden, ist es besser, StatusBarWait zu verwenden, weil es Optimierungen beinhaltet, die einen Overhead durch mehrfaches Aufrufen von StatusBarGetText verhindern.

StatusBarWait bestimmt das Zielfenster, bevor es damit beginnt, auf eine Übereinstimmung zu warten. Falls dieses Zielfenster geschlossen wird, hört der Befehl auf zu warten, auch dann, wenn ein anderes Fenster mit dem gleichen Fenstertitel und Fenstertext vorhanden ist.

Während der Befehl in einem Wartezustand ist, können neue Threads via Hotkey, benutzerdefinierte Menüeinträge oder Timer gestartet werden.

Fenstertitel und -texte unterscheiden zwischen Groß- und Kleinschreibung. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.

Siehe auch

StatusBarGetText, WinGetTitle, WinGetText, ControlGetText

Beispiel

; Das folgende Beispiel schreibt ein neues Suchmuster in ein vorhandenes Explorer-/Suchfenster.
IfWinExist, Suchergebnisse ; Bestimmt das zuletzt gefundene Fenster, um das untere zu vereinfachen.
{
    WinActivate
    Send, {tab 2}!o*.txt{enter}  ; Schreibt das Muster in das Suchfenster.
    Sleep, 400  ; Gewährt der Statusleiste Zeit, auf "Suchen" umzuwechseln.
    StatusBarWait, gefunden, 30
    if ErrorLevel
        MsgBox, Die Zeit ist abgelaufen oder es gab ein Problem.
    else
        MsgBox, Die Suche wurde erfolgreich durchgeführt.
}
; Das folgende Beispiel wartet auf eine Änderung der Statusleiste im aktiven Fenster. Dieses Beispiel benötigt [v1.0.46.06+].
SetTitleMatchMode RegEx
IfWinExist A  ; Setzt das zuletzt gefundene Fenster auf das aktive Fenster.
{
    StatusBarGetText, Originaltext
    StatusBarWait, ^(?!^\Q%Originaltext%\E$)  ; Dieser reguläre Ausdruck wartet auf eine Änderung des Textes.
}