ControlGetText

コントロールからテキストを取得します。

Text := ControlGetText(Control , WinTitle, WinText, ExcludeTitle, ExcludeText)

パラメータ

Control

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

コントロールのClassNN、テキスト、HWND、またはHwndプロパティを持つオブジェクトを指します。詳しくはControlパラメータをご覧ください。

WinTitle, WinText, ExcludeTitle, ExcludeText

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

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

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

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

戻り値

型:文字列

説明: 指定されたコントロールのテキストを返します。

エラー処理

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

備考

注:ListView、ListBox、またはComboBoxからテキストを取得するには、代わりにListViewGetContentまたはControlGetItemsを使用します。

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

この関数は、ターゲットコントロール(例えば、大きな文書を開いているエディター)が大量のテキストを含んでいる場合、大量のRAMを使用する可能性があります。ただし、Text := ""のように、変数に何も代入しないことで、使用後に変数のメモリを解放することができます。

ほとんどのコントロールタイプから取得したテキストは、各行の終わりを示すために、単独のラインフィード(`n)ではなく、キャリッジリターンとラインフィード(`r`n)を使用します。

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

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

ControlSetTextWinGetTextControl関数

メモ帳のエディットコントロールから現在のテキストを取得し、Textに格納します。この例は、Windows 11以降では、クラシック版のメモ帳を必要とするため、失敗する可能性があります。

Text := ControlGetText("Edit1", "Untitled -")

メインウィンドウのエディットコントロールから現在のテキストを取得し、報告します。

ListVars
WinWaitActive "ahk_class AutoHotkey"
MsgBox ControlGetText("Edit1") ; 上の行で見つかったウィンドウを使用します。.