WinGetText

指定されたウィンドウからテキストを取得します。

Text := WinGetText(WinTitle, WinText, ExcludeTitle, ExcludeText)

パラメータ

WinTitle, WinText, ExcludeTitle, ExcludeText

型:文字列整数またはオブジェクト

もしこれらの項目が未設定または省略されたときは、最後に見つかったウィンドウが使用されます。そうでないときは、WinTitleウィンドウタイトルまたはターゲットウィンドウを識別するための他の基準、および/またはWinTextにターゲットウィンドウの単一のテキスト要素からの部分文字列(付属のWindow Spyユーティリティを使えばわかります)を指定します。

ExcludeTitleExcludeTextはウィンドウのタイトルまたはテキストで除外するために使用します。指定の仕方はWinTitleWinTextに似ていますが、ExcludeTitleはウィンドウのタイトル以外の基準(ウィンドウクラスやHWNDなど)を認識しません。

ウィンドウのタイトルとテキストは大文字と小文字を区別します。DetectHiddenWindows関数 と DetectHiddenText関数で変更しない限り、初期設定では非表示ウィンドウは検出されず、非表示テキストは検出されます。SetTitleMatchMode関数で変更しない限り、初期設定ではウィンドウのタイトルはその中のどこかにWinTitleまたはExcludeTitleを含んでいれば一致します。

戻り値

型:文字列

この関数は、指定されたウィンドウのテキストを返します。

エラー処理

ウィンドウが見つからないときは、TargetErrorがスローされます。

ウィンドウのテキストの取得に問題があったときは、Errorがスローされます。

備考

取得されるテキストは、通常、ウィンドスパイがそのウィンドウに対して表示するものと同じです。ただし、DetectHiddenTextがオフになっているときは、隠しテキストは戻り値から省かれます。

各テキスト要素はスクリプトで`r`nと表現されるキャリッジリターンとラインフィード(CR+LF)で終わります。個々の行や部分文字列を抽出するには、InStrSubStrなどの関数を使用する。構文解析ループを使って、行や単語をひとつずつ調べることもできる。

取得したテキストが不完全で切り捨てられたように見えるときは代わりにSendMessageでWM_GETTEXTメッセージを送信してテキストを取得する必要があるかもしれません。これは、アプリケーションによっては、WM_GETTEXTLENGTHメッセージに正しく応答しないため、AutoHotkeyが戻り値を小さくしすぎて、すべてのテキストを収めることができないためです。

この関数は、ターゲット・ウィンドウ(例えば、大きなドキュメントを開いているエディター)に大量のテキストが含まれている場合、大量のRAMを使用する可能性があります。これを避けるために、代わりにControlGetTextを使うことで、ウィンドウのテキストの一部だけを取り出すことができるかもしません。いずれにせよ、Text := ""のように、変数に何も代入しないことで、変数のメモリを後で解放することができる。

WinGetText関数は様々なタイプのコントロールに対して動作させるため、常に低速モードを使用してテキストを取得します。そのため、SetTitleMatchMode "Slow"を実行する必要はありません。

ウィンドウ内の全てのコントロールの配列を取得するには、WinGetControlsまたはWinGetControlsHwndを使用します。

ControlGetTextWinGetTitleWinGetPos

電卓を起動して、ウィンドウが開くまで待ち、そのテキストを取得して報告します。

Run "calc.exe"
WinWait "Calculator"
MsgBox "The text is:`n" WinGetText() ; WinWait関数で見つかったウィンドウが対象となります。