WinGetText

Ermittelt den Text eines bestimmten Fensters.

WinGetText, AusgabeVar , FensterTitel, FensterText, IgnoriereTitel, IgnoriereText

Parameter

AusgabeVar

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

FensterTitel

Der Titel oder andere Möglichkeiten zum Identifizieren des Zielfensters. Weitere Informationen finden Sie unter FensterTitel-Parameter.

FensterText

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

IgnoriereTitel

Alle Fenster, die diesen Wert in ihren Titeln enthalten, werden ignoriert.

IgnoriereText

Alle Fenster, die diesen Wert in ihren Textelementen enthalten, werden ignoriert.

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 keine passenden Fenster gefunden werden, wird AusgabeVar leer gemacht.

Der ermittelte Text ist generell das gleiche, was das interne Tool Window Spy für dieses Fenster anzeigt. Wenn DetectHiddenText ausgeschaltet wurde, werden versteckte Texte in AusgabeVar weggelassen.

Jedes Textelement endet mit einem CR- und LF-Zeilenumbruchszeichen, die im Skript als `r`n dargestellt werden können. Um Zeilen oder Teilzeichenketten einzeln zu extrahieren, verwenden Sie Befehle oder interne Funktionen wie InStr() und SubStr(). Eine parsende Schleife kann auch genutzt werden, um Zeilen oder Worte einzeln durchzugehen.

Wenn der abgerufene Text abgeschnitten (unvollständig) zu sein scheint, können Sie versuchen, VarSetCapacity(AusgabeVar, 55) vor WinGetText zu setzen [ersetzen Sie 55 mit einer Zeichenlänge, die wesentlich länger ist als der abgeschnittene Text]. Dies muss in der Regel getan werden, 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 (die via #MaxMem-Direktive geändert werden kann). Demzufolge verbraucht dieser Befehl sehr viel Arbeitsspeicher, falls das Zielfenster eine große Menge an Text beinhaltet (z. B. ein Editor, in dem ein großes Dokument offen ist). Um das zu verhindern, 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 man ihr einen leeren Wert zuweist, z. B. AusgabeVar := "".

Um eine Liste aller Steuerelemente in einem Fenster abzurufen, folgen Sie diesem Beispiel: WinGet, AusgabeVar, ControlList, FensterTitel.

Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.

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%