跳到主要内容

等待窗口

暂停动作,直到指定窗口满足条件,或发生超时、取消、目标失效等结果。可用于替代不稳定的固定延时。

当前模块定义

概述

选择等待条件

  • 出现:找到至少一个符合条件的窗口。指定句柄时,只要求句柄仍指向目标窗口,不要求窗口可见。
  • 消失:按条件查找时,所有符合条件的窗口都已消失;指定句柄时,目标窗口已销毁。
  • 成为前台窗口:符合条件的窗口成为当前前台窗口。
  • 最小化:至少一个符合条件的窗口处于最小化状态。
  • 恢复:至少一个符合条件的窗口存在,并且不处于最小化状态。

按条件查找匹配多个窗口时,“出现”“最小化”和“恢复”在任意一个窗口满足后完成;“消失”要等到全部匹配窗口都消失。

指定目标窗口

按条件查找

可使用窗口标题、进程名和窗口类名定位顶层窗口:

  • 同时填写多个条件时按 AND 组合。
  • 标题使用忽略大小写的包含匹配。
  • 进程名可填写 notepadnotepad.exe,不要填写完整路径。
  • 窗口类名使用忽略大小写的精确匹配。
  • 默认只查找可见窗口;需要匹配隐藏窗口时启用 包含隐藏窗口

窗口标题可能随文档名或页面状态变化。能够确定进程名或窗口类名时,建议同时填写,以减少误匹配。

按进程名筛选时,如果系统无法读取某个候选窗口的进程名,该窗口无法被确认符合条件,因此会被跳过。“消失”在每次检查时只统计当前能够确认匹配的窗口,不会被无关的高权限或受保护进程窗口一直阻塞。如果必须准确追踪某一个已经找到的窗口,请改用 指定窗口句柄

指定窗口句柄

将前一步获得的顶层窗口句柄传入 窗口句柄。固定句柄模式会在等待期间识别句柄失效和复用,避免把后来复用同一数值的其他窗口当成原目标。

低权限 Quicker 可能无法为管理员权限窗口建立稳定身份标记。此时模块会返回 invalidTarget,而不是继续进行不可靠的等待。

超时、取消和失败处理

最长等待秒数默认为 10 秒;设为 0 表示无限等待。无限等待仍可被停止动作、关闭关联等待窗口或 WaitAny 分支取消。

模块通过 等待结果输出结构化状态:

结果含义
matched等待条件已经满足。
timedOut在最长等待时间内没有满足条件。
canceled动作停止或等待分支被取消。
invalidTarget初始目标或查询条件无效。
targetLost等待期间指定的窗口目标失效或被复用。
error查询窗口状态时发生错误。

关闭 失败后停止 后,可以根据 是否成功等待结果自行分支处理。输出还包括窗口句柄、匹配窗口数、标题、进程名、类名、可见/前台/最小化状态、等待耗时、检查次数和诊断消息。

常见用法

启动程序后等待窗口出现

  1. 使用“运行或打开”启动程序。
  2. 添加“等待窗口”,选择 出现
  3. 使用进程名定位窗口,并设置合理的超时时间。
  4. 后续步骤使用输出的窗口句柄操作该窗口。

关闭窗口后确认它已经消失

  1. 保存目标窗口句柄。
  2. 请求关闭窗口。
  3. 添加“等待窗口”,选择 消失并传入该句柄。
  4. 如果返回 timedOut,再决定是否提示用户或强制结束进程。

等待应用切换到前台

选择 成为前台窗口,并使用进程名、标题或窗口类名定位目标。条件满足后再发送按键或执行界面自动化,可以减少输入落到错误窗口的风险。

限制与排障

  • 模块按短间隔检查窗口状态,不保证在状态变化的同一毫秒返回。
  • “恢复”表示窗口不是最小化状态,不表示它一定处于前台。
  • 某些窗口标题会频繁变化;仅依赖标题可能匹配不到或匹配到其他窗口。
  • 进程名不可读的窗口不会满足进程名条件;需要跨权限识别目标时,应以相同或更高权限运行 Quicker,指定窗口句柄也不能绕过该权限限制。
  • 操作管理员权限窗口时,通常需要以相同或更高权限运行 Quicker。

相关链接