# WinWaitClose

等待直到找不到匹配的窗口.

    WinWaitClose WinTitle, WinText, Timeout, ExcludeTitle, ExcludeText

## 参数

WinTitle, WinText, ExcludeTitle, ExcludeText

  类型: 字符串, 整数或对象

  如果这些都未设置或省略, 将使用上次找到的窗口. 否则, 为 WinTitle 指定窗口标题或其他条件, 来标识目标窗口, 和/或为 WinText 指定目标窗口的单个文本元素的子字符串(由包含的 Window Spy 实用程序显示). 如果 DetectHiddenText 已经打开, 则检测隐藏文本元素. 标题或文本包含 ExcludeTitle 或 ExcludeText 的窗口将不被考虑.

## 返回值

类型: 整数(布尔值)

如果该函数超时, 则此函数返回 0(false), 否则返回 1(true).

## 备注

如果没有匹配的窗口存在, 函数将不会等待 Timeout 过期. 相反, 它将立即返回 1 并让脚本继续执行. 相反, 即使关闭了匹配窗口, 函数也可以继续等待, 直到找不到更多的匹配窗口.

由于 `"A"` 匹配任何给定时刻处于活动状态的窗口, 因此 `WinWaitClose "A"` 通常无限期地等待. 要替代等待当前活动窗口关闭, 请指定其标题或唯一 ID, 如下例所示:

    WinWaitClose WinExist("A")

只要找到匹配的窗口, WinWaitClose 就会更新最后找到的窗口. 这样做的一个用途是在函数超时后识别或操作窗口. 例如:

    Gui("", "Test window " Random()).Show("w300 h50")  ; 显示测试窗口.
    if !WinWaitClose("Test",, 5)  ; 等待 5 秒钟以让人关闭窗口.
    {
        MsgBox "Window not yet closed: " WinGetTitle()
        WinClose  ; 关闭 WinWaitClose 找到的窗口.
    }

当函数处于等待状态时, 可以通过热键, 自定义菜单项或计时器启动新的线程.

如果另一个线程更改了用于该函数参数的任何变量的内容, 该函数将不会看到更改 -- 它将继续使用在函数首次开始等待时最初出现在变量中的标题和文本.

窗口标题和文本是区分大小写的. 除非 DetectHiddenWindows 被打开, 否则不会检测隐藏窗口, even if WinTitle is a HWND or object.

## 相关

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

## 示例

打开记事本, 等待它的存在, 然后等待它被关闭.

    Run "notepad.exe"
    WinWait "Untitled - Notepad"
    WinWaitClose  ; 使用由 WinWait 找到的窗口.
    MsgBox "Notepad is now closed."

dftg