WinWaitClose

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

WinWaitClose WinTitle, WinText, Timeout, ExcludeTitle, ExcludeText

参数

WinTitle

类型: 字符串, 整数对象

识别目标窗口的窗口标题或其他条件. 请参阅 WinTitle.

WinText

类型: 字符串

如果存在, 此参数必须是目标窗口的单个文本元素的子字符串(和内置的 Window Spy 工具显示的一样). 如果 DetectHiddenText 为 ON, 那么会检测隐藏文本元素.

Timeout

类型: 整数浮点数

超时并返回 0 前, 等待的秒数. 留空以允许函数无限期等待.

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 被打开, 否则不会检测隐藏窗口.

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

示例

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

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