等待直到找不到匹配的窗口.
Boolean := WinWaitClose(WinTitle, WinText, Timeout, ExcludeTitle, ExcludeText)
类型: 字符串, 整数或
如果这些都是空白或省略, 将使用上次找到的窗口. 否则, 为 WinTitle 指定窗口标题或其他条件, 来标识目标窗口, 和/或为 WinText 指定目标窗口的单个文本元素的子字符串(由包含的 Window Spy 实用程序显示). ExcludeTitle 和 ExcludeText 可用于根据标题或文本排除一个或多个窗口. 它们的规范类似于 WinTitle 和 WinText, 除了 ExcludeTitle 不识别除窗口标题之外的任何条件. 窗口标题和文本是区分大小写的. 默认情况下, 不检测隐藏窗口, 而检测隐藏文本元素, 除非使用 DetectHiddenWindows 和 DetectHiddenText 进行更改. 默认情况下, 窗口标题的任意位置包含 WinTitle 或 ExcludeTitle 就能形成匹配, 除非使用 SetTitleMatchMode 进行了更改.
如果省略, 函数将会无限期等待. 否则, 等待的时间不会超过这个秒数. 若要等待零点几秒, 请指定一个浮点数, 例如, 0.25 表示最多等待 250 毫秒.
类型: 整数(布尔值)
如果该函数超时, 则此函数返回 0(false), 否则返回 1(true).
如果没有匹配的窗口存在, 函数将不会等待 Timeout 过期. 相反, 它将立即返回 1 并让脚本继续执行. 相反, 即使关闭了匹配窗口, 函数也可以继续等待, 直到找不到更多的匹配窗口.
如果 WinTitle 指定了一个纯 HWND(作为一个整数或带有 HWND 属性的对象), 隐藏窗口只有在使用 DetectHiddenWindows 时才会被检测到. 这只适用于 WinWait 和 WinWaitClose; 对于其他窗口函数, 指定一个纯 HWND 将导致检测隐藏窗口, 而不考虑 DetectHiddenWindows.
由于 "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 找到的窗口. }
当函数处于等待状态时, 可以通过热键, 自定义菜单项或计时器启动新的线程.
如果另一个线程更改了用于该函数参数的任何变量的内容, 该函数将不会看到更改 -- 它将继续使用在函数首次开始等待时最初出现在变量中的标题和文本.
WinClose, WinWait, WinWaitActive, WinExist, WinActive, ProcessWaitClose, SetTitleMatchMode, DetectHiddenWindows