WinWait

等待直到指定的窗口存在.

HWND := WinWait(WinTitle, WinText, Timeout, ExcludeTitle, ExcludeText)

参数

WinTitle, WinText, ExcludeTitle, ExcludeText

类型: 字符串, 整数对象

至少需要其中的一个. 否则, 为 WinTitle 指定窗口标题或其他条件, 来标识目标窗口, 和/或为 WinText 指定目标窗口的单个文本元素的子字符串(由包含的 Window Spy 实用程序显示).

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

窗口标题和文本是区分大小写的. 默认情况下, 不检测隐藏窗口, 而检测隐藏文本元素, 除非使用 DetectHiddenWindowsDetectHiddenText 进行更改. 默认情况下, 窗口标题的任意位置包含 WinTitleExcludeTitle 就能形成匹配, 除非使用 SetTitleMatchMode 进行了更改.

Timeout

类型: 整数浮点数

如果省略, 函数将会无限期等待. 否则, 指定在超时之前等待的秒数. 若要等待零点几秒, 请指定一个浮点数, 例如, 0.25 表示最多等待 250 毫秒.

返回值

类型: 整数

如果发现了匹配的窗口, 则该函数返回该窗口的 HWND(唯一 ID), 否则函数超时, 返回 0.

备注

如果匹配窗口存在, 函数不会等待到 Timeout 过期. 相反, 它会更新上次找到的窗口和返回, 并让脚本继续执行.

如果 WinTitle 指定了一个纯 HWND(作为一个整数或带有 HWND 属性的对象), 隐藏窗口只有在使用 DetectHiddenWindows 时才会被检测到. 这只适用于 WinWait 和 WinWaitClose; 对于其他窗口函数, 指定一个纯 HWND 将导致检测隐藏窗口, 而不考虑 DetectHiddenWindows.

如果 WinTitle 指定了一个无效的纯 HWND, 该函数立即返回, 而不等待 Timeout 超时. 等待另一个具有相同 HWND 值的窗口创建是没有意义的, 因为两个窗口之间可能没有关系.

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

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

WinWaitActive 不同, 不能使用上次找到的窗口. 所以, 至少有一个窗口参数(WinTitle, WinText, ExcludeTitle, ExcludeText) 必须是非空的.

WinWaitActive, WinWaitClose, WinExist, WinActive, ProcessWait, SetTitleMatchMode, DetectHiddenWindows

示例

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

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