WinWaitActive / WinWaitNotActive

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

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

参数

WinTitle, WinText, ExcludeTitle, ExcludeText

如果这些都是空白或省略, 将使用上次找到的窗口. 否则, 为 WinTitle 指定窗口标题或其他条件, 来标识目标窗口, 和/或为 WinText 指定目标窗口的单个文本元素的子字符串(由包含的 Window Spy 实用程序显示).

ExcludeTitleExcludeText 可用于根据标题或文本排除一个或多个窗口. 它们的规范类似于 WinTitleWinText, 除了 ExcludeTitle 不识别除窗口标题之外的任何条件.

窗口标题和文本是区分大小写的. 默认情况下, 不检测隐藏窗口, 而检测隐藏文本元素, 除非使用 DetectHiddenWindowsDetectHiddenText 进行更改. 默认情况下, 窗口标题必须以指定的 WinTitleExcludeTitle 开头才能匹配, 除非使用 SetTitleMatchMode 进行更改.

Timeout

如果为空或省略, 命令将无限期等待. 否则, 它等待不超过这个秒数的时间. 若要等待比秒更小的时间, 请指定一个浮点数, 例如, 0.25 等待最多 250 毫秒. 指定 0 等同于指定 0.5. 此参数可以是表达式.

ErrorLevel

命令超时后 ErrorLevel 被置为 1, 否则为 0.

备注

如果匹配窗口符合了命令的要求, 那么此命令不再等待 Timeout 到期. 相反地, 它会立即设置 ErrorLevel 为 0 并让脚本继续执行.

当 WinWaitActive 和 WinWaitNotActive 执行时如果符合条件的窗口是活动的, 那么它们都会更新上次找到的窗口. 此外, 如果在 WinWaitActive 超时前符合条件的窗口变成活动窗口, 那么它会更新上次找到的窗口.

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

如果其他线程改变了在此命令参数中使用的任何变量内容, 此命令会无视这些变化, 它会继续使用在开始等待时变量中原始的标题和文本.

WinWait, WinWaitClose, WinExist(), WinActive(), SetTitleMatchMode, DetectHiddenWindows

示例

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

Run, notepad.exe
; 中文系统中 Untitled - Notepad 应替换为 无标题 - 记事本.
WinWaitActive, Untitled - Notepad, , 2
if ErrorLevel
{
    MsgBox, WinWait timed out.
    return
}
else
    WinMinimize  ; 使用 WinWaitActive 找到的窗口.