StatusBarWait

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

StatusBarWait LeisteText, Zeitlimit, SegmentNummer, FensterTitel, FensterText, Intervall, AusnahmeTitel, AusnahmeText

Parameter

LeisteText

Typ: Zeichenkette

Wenn leer oder weggelassen, wartet die Funktion, bis die Statusleiste leer ist. Andernfalls geben Sie den Text oder einen Teil des Textes an, auf dessen Erscheinen die Funktion warten soll. Der Text ist Groß-/Kleinschreibung-sensitiv. Das Übereinstimmungsverhalten wird durch SetTitleMatchMode bestimmt, ähnlich wie bei FensterTitel unten.

Um stattdessen auf eine Änderung des Leistentextes zu warten, führen Sie StatusBarGetText wiederholt mit einer Schleife aus oder verwenden Sie das RegEx-Beispiel am Ende dieser Seite.

Zeitlimit

Typ: Integer oder Float

Wenn weggelassen, wird die Funktion unendlich lang warten. Andernfalls geben Sie die maximale Wartezeit in Sekunden an. Um auf einen Bruchteil einer Sekunde zu warten, geben Sie eine Floating-Point-Zahl an, z.B. 0.25, um maximal 250 Millisekunden zu warten.

SegmentNummer

Typ: Integer

Wenn weggelassen, wird standardmäßig 1 verwendet, was üblicherweise das Segment ist, das den Text von Interesse enthält. Andernfalls geben Sie die Nummer des Leistensegments an, dessen Text abgerufen werden soll.

FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Typ: Zeichenkette, Integer oder Objekt

Wenn jeder dieser Parameter leer ist oder weggelassen wird, wird das Zuletzt Gefundene Fenster verwendet. Andernfalls geben Sie für FensterTitel einen Fenstertitel oder andere Kriterien zur Identifizierung des Zielfensters und/oder für FensterText eine Teilzeichenkette aus einem Textelement des Zielfensters an (Textelemente können mit dem internen Tool "Window Spy" in Erfahrung gebracht werden).

AusnahmeTitel und AusnahmeText können verwendet werden, um ein oder mehrere Fenster anhand ihres Titels oder Textes auszuschließen. Ihre Angabe ähnelt der von FensterTitel und FensterText, außer dass AusnahmeTitel keine anderen Kriterien als den Fenstertitel erkennt.

Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Standardmäßig werden versteckte Fenster nicht erkannt und versteckte Textelemente erkannt, was mit DetectHiddenWindows und DetectHiddenText geändert werden kann. Standardmäßig kann ein Fenstertitel den angegebenen FensterTitel oder AusnahmeTitel an beliebiger Stelle enthalten, um eine Übereinstimmung zu sein, was mit SetTitleMatchMode geändert werden kann.

Intervall

Typ: Integer

Wenn weggelassen, wird standardmäßig 50 verwendet. Andernfalls geben Sie an, wie oft die Statusleiste geprüft werden soll, während die Funktion wartet (in Millisekunden).

Rückgabewert

Typ: Integer (boolesch)

Diese Funktion gibt 1 (true) zurück, wenn eine Übereinstimmung gefunden wurde, oder 0 (false), wenn die Funktion das Zeitlimit überschritten hat.

Fehlerbehandlung

Es wird ein TargetError ausgelöst, wenn das Zielfenster nicht gefunden werden konnte oder keine reguläre Statusleiste enthält.

Es wird ein OSError ausgelöst, wenn es ein Problem beim Senden der SB_GETPARTS-Meldung gab oder keine Antwort innerhalb von 2000 ms erfolgte, oder wenn kein Speicher innerhalb des Prozesses, dem die Statusleiste gehört, reserviert werden konnte.

Bemerkungen

Diese Funktion versucht, die erste reguläre Statusleiste eines Fensters zu lesen (allgemeines Microsoft-Steuerelement: msctls_statusbar32). Einige Programme verwenden eigene Statusleisten oder spezielle Versionen des MS-Steuerelements - in diesem Fall werden solche Leisten nicht unterstützt.

Anstatt StatusBarGetText wiederholt mit einer Schleife auszuführen, ist es in der Regel effizienter, StatusBarWait zu verwenden, da es Optimierungen enthält, die den Overhead durch mehrfache Aufrufe von StatusBarGetText vermeiden.

StatusBarWait ermittelt das Zielfenster, bevor es damit beginnt, auf eine Übereinstimmung zu warten. Wenn dieses Zielfenster geschlossen wird, hört die Funktion auf zu warten, auch dann, wenn ein anderes Fenster mit demselben FensterTitel und FensterText existiert.

Während die Funktion wartet, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.

StatusBarGetText, WinGetTitle, WinGetText, ControlGetText

Beispiele

Schreibt ein neues Suchmuster in ein existierendes Explorer-/Suchfenster.

if WinExist("Suchergebnisse") ; Setzt das zuletzt gefundene Fenster, um das folgende zu vereinfachen.
{
    WinActivate
    Send "{tab 2}!o*.txt{enter}"  ; Das Suchmuster in das Suchfenster schreiben.
    Sleep 400  ; Der Statusleiste Zeit geben, auf "wird durchsucht" zu wechseln.
    if StatusBarWait("gefunden", 30)
        MsgBox "Die Suche war erfolgreich."
    else
        MsgBox "Die Funktion hat das Zeitlimit überschritten."
}

Wartet auf eine Änderung der Statusleiste im aktiven Fenster.

SetTitleMatchMode "RegEx"  ; Akzeptiert Reguläre Ausdrücke für den nachfolgenden Gebrauch.
if WinExist("A")  ; Macht das aktive Fenster zum zuletzt gefundenen Fenster.
{
    Originaltext := StatusBarGetText()
    StatusBarWait "^(?!^\Q" Originaltext "\E$)"  ; Dieser reguläre Ausdruck wartet auf eine Änderung des Textes.
}