WinWaitClose

一致するウィンドウが見つからなくなるまで待ちます。

WinWaitClose WinTitle, WinText, Timeout, ExcludeTitle, ExcludeText

パラメータ

WinTitle、WinText、ExcludeTitle、ExcludeText

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

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

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

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

タイムアウト

型:整数または浮動小数点数

省略した場合は、無期限に待機します。そうでなければ、指定された秒数以上待機することはありません。1 秒未満の時間で待機するには、浮動小数点数を指定します。たとえば最大 250 ミリ秒待機するときは、 0.25 と指定します。

戻り値

型:整数(ブーリアン)

この関数は、タイムアウトした場合は 0(偽)を、そうでない場合は 1(真)を返します。

備考

マッチするウィンドウが存在しない場合、この関数はタイムアウトが切れるのを待たない。その代わり、即座に1が返され、スクリプトの実行が継続される。逆に、マッチするウィンドウが閉じた後でも、マッチするウィンドウが見つからなくなるまで、関数は待ち続けることができる。

WinWaitClose "A"は、その時点でアクティブなウィンドウにマッチするため、通常は無期限に待機する。現在のアクティブ・ウィンドウが閉じるのを待つには、次の例のようにタイトルかユニークIDを指定する:

WinWaitClose WinExist("A")

WinWaitCloseは、一致するウィンドウが見つかるたびに、最後に見つかったウィンドウを更新します。この用途のひとつは、ファンクションがタイムアウトした後にウィンドウを特定したり操作したりすることである。事例:

Gui("", "Test window " Random()).Show("w300 h50")  ; Show a test window.
if !WinWaitClose("Test",, 5)  ; Wait 5 seconds for someone to close it.
{
    MsgBox "Window not yet closed:" WinGetTitle()
    WinClose  ; WinWaitClose関数で見つかったウィンドウを閉じます。
}

関数が待機状態にある間、ホットキーカスタムメニュー項目、またはタイマーによって新しいスレッドを起動することができます。

他のスレッドが、この関数のパラメータに使われていた変数の内容を変更しても、この関数にはその変更は反映されない。

DetectHiddenWindows関数もHWNDで識別される非表示ウィンドウが検出されるかどうかに影響しますが、WinWait関数またはWinWaitClose関数と併用したときに限られます。

WinClose, WinWait, WinWaitActive, WinExist, WinActive, ProcessWaitClose, SetTitleMatchMode, DetectHiddenWindows

メモ帳を開き、それが存在するまで待ち、閉じるまで待つ。

Run "notepad.exe"
WinWait "Untitled - Notepad"
WinWaitClose ; WinWait関数で見つかったウィンドウを使います。
MsgBox "Notepad is now closed."