WinGetText

Ruft den Text eines bestimmten Fensters ab.

Text := WinGetText(FensterTitel, FensterText, AusnahmeTitel, AusnahmeText)

Parameter

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.

Rückgabewert

Typ: Zeichenkette

Diese Funktion gibt den Text des angegebenen Fensters zurück.

Fehlerbehandlung

Es wird ein TargetError ausgelöst, wenn das Fenster nicht gefunden werden konnte.

Es wird ein Error ausgelöst, wenn der Text des Fensters aufgrund eines Problems nicht abgerufen werden konnte.

Bemerkungen

Der abgerufene Text ist grundsätzlich derselbe wie der, den das interne Tool "Window Spy" für dieses Fenster anzeigt. Wenn DetectHiddenText jedoch ausgeschaltet wurde, werden versteckte Texte im Rückgabewert weggelassen.

Jedes Textelement endet mit einem Wagenrücklauf-Zeilenvorschub-Paar (`r`n). Um Zeilen oder Teilzeichenketten einzeln zu extrahieren, verwenden Sie Funktionen wie InStr und SubStr. Es kann auch eine parsende Schleife verwendet werden, um Zeilen oder Wörter einzeln durchzugehen.

Wenn der abgerufene Text gekürzt (unvollständig) ist, kann es erforderlich sein, den Text stattdessen durch Senden der WM_GETTEXT-Meldung via SendMessage abzurufen. Der Grund dafür ist, dass einige Anwendungen nur sporadisch oder gar nicht auf die WM_GETTEXTLENGTH-Meldung reagieren, wodurch AutoHotkey den Rückgabewert zu klein für den gesamten Text macht.

Diese Funktion kann sehr viel Arbeitsspeicher beanspruchen, wenn das Zielfenster eine große Menge an Text enthält (z.B. wenn ein großes Dokument in einem Texteditor geöffnet wurde). Um dies zu vermeiden, verwenden Sie stattdessen ControlGetText, um nur bestimmte Bereiche des Fenstertextes abzurufen. In allen Fällen kann der Speicher einer Variable später wieder freigegeben werden, indem ihr ein leerer Wert zugewiesen wird, d.h. Text := "".

SetTitleMatchMode "Slow" muss nicht verwendet werden, da WinGetText den Text immer im langsamen Modus abruft (dieser Modus funktioniert mit viel mehr Steuerelementen).

Mit WinGetControls oder WinGetControlsHwnd kann ein Array von Steuerelementen in einem Fenster abgerufen werden.

ControlGetText, WinGetTitle, WinGetPos

Beispiele

Öffnet den Taschenrechner, wartet bis er existiert, und ermittelt und meldet seinen Text.

Run "calc.exe"
WinWait "Rechner"
MsgBox "Der Text ist:`n" WinGetText() ; Verwendet das von WinWait gefundene Fenster.