WinGetText

Ruft den Text eines bestimmten Fensters ab.

WinGetText, AusgabeVar , FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Parameter

AusgabeVar

Name der Ausgabevariable, in der der abgerufene Text gespeichert werden soll.

FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

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 muss ein Fenstertitel mit dem angegebenen FensterTitel oder AusnahmeTitel beginnen, um eine Übereinstimmung zu sein, was mit SetTitleMatchMode geändert werden kann.

Fehlerbehandlung

[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird bei Misserfolg auf 1 und bei Erfolg auf 0 gesetzt.

Bemerkungen

Wenn kein Fenster gefunden wurde, wird AusgabeVar leer gemacht.

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 in AusgabeVar weggelassen.

Jedes Textelement endet mit einem CR-LF-Paar (`r`n). Um Zeilen oder Teilzeichenketten einzeln zu extrahieren, verwenden Sie Befehle oder interne 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, versuchen Sie es mit VarSetCapacity(AusgabeVar, 55) vor WinGetText (ersetzen Sie 55 mit einer Zahl, die wesentlich größer ist als die Länge des gekürzten Textes). Dies ist in der Regel erforderlich, wenn AutoHotkey die Ausgabevariable für den Text zu klein macht, weil die Anwendung, deren Text abgerufen werden soll, nur sporadisch oder gar nicht auf die WM_GETTEXTLENGTH-Meldung reagiert.

Die Menge des abgerufenen Textes ist auf die maximale Kapazität einer Variable beschränkt (was mit der #MaxMem-Direktive geändert werden kann). Dieser Befehl kann daher 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. AusgabeVar := "".

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

Mit WinGet ControlList kann eine Liste von Steuerelementen in einem Fenster abgerufen werden.

ControlGetText, WinGetActiveStats, WinGetActiveTitle, WinGetTitle, WinGetPos, #MaxMem

Beispiele

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

Run, Calc.exe
WinWait, Rechner
WinGetText, Text ; Verwendet das von WinWait gefundene Fenster.
MsgBox, Der Text ist:`n%Text%