WinWaitActive / WinWaitNotActive

等待直到指定的窗口处于活动或不活动状态.

WinWaitActive WinTitle, WinText, Timeout, ExcludeTitle, ExcludeText
WinWaitNotActive WinTitle, WinText, Timeout, ExcludeTitle, ExcludeText

参数

WinTitle, WinText, ExcludeTitle, ExcludeText

类型: 字符串, 整数对象

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

返回值

类型: 整数

如果匹配条件, WinWaitActive 返回活动窗口的 HWND(唯一 ID), 否则函数超时, 返回 0.

如果活动窗口不匹配条件, 则 WinWaitNotActive 返回 1, 否则函数超时, 返回 0.

备注

如果活动窗口满足函数的期望, 函数不会等待到 Timeout 过期. 相反, 它将立即返回, 并让脚本继续执行.

由于 "A" 匹配任何给定时刻处于活动状态的窗口, 因此 WinWaitNotActive "A" 通常无限期地等待. 要替代等待一个不同的窗口激活, 指定其唯一的 ID, 如下例所示:

WinWaitNotActive WinExist("A")

如果匹配窗口在函数开始时或在函数等待时处于活动状态, 则 WinWaitActive 和 WinWaitNotActive 都将更新上次找到的窗口.

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

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

窗口标题和文本是区分大小写的. 除非 DetectHiddenWindows 被打开, 否则不会检测隐藏窗口.

WinWait, WinWaitClose, WinExist, WinActive, SetTitleMatchMode, DetectHiddenWindows

示例

打开记事本, 最多等待 2 秒, 直到它被激活. 如果 WinWait 超时, 会显示一条错误信息, 否则记事本将被最小化.

Run "notepad.exe"
if WinWaitActive("Untitled - Notepad", , 2)
    WinMinimize  ; 使用由 WinWaitActive 找到的窗口.
else
    MsgBox "WinWaitActive timed out."
unixetc