WinGetText

Ermittelt den Text eines bestimmten Fensters.

WinGetText, AusgabeVar , Fenstertitel, Fenstertext, Titelausnahme, Textausnahme

Parameter

AusgabeVar

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

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.

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, 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

Der ermittelte Text ist generell das gleiche, was Windows 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, nutzt man Befehle wie StringGetPos und StringMid. 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, ruft man mit ControlGetText stattdessen nur bestimmte Bereiche des Fenstertextes ab. Auf jeden Fall kann der Speicher einer Variable später wieder zur Verfügung gestellt werden, indem ihr nichts zugewiesen wird, z. B. AusgabeVar := "".

Um eine Liste aller Steuerelemente in einem Fenster abzurufen, nutzt man folgende Zeile: WinGet, AusgabeVar, Steuerelementliste, Fenstertitel.

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

Siehe auch

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

Beispiel

Run, Calc.exe
WinWait, Rechner
WinGetText, Text  ; Das oben gefundene Fenster wird verwendet.
MsgBox, Der Text ist:`n%text%