返回介绍

窗口标题与文本(高级篇)

发布于 2020-03-05 18:21:26 字数 2803 浏览 1508 评论 0 收藏 0

AutoIt 支持四种“窗口匹配”模式。若要更改此模式可通过函数 AutoItSetOption 修改 WinTitleMatchMode 属性即可。

模式 1 (默认)

只匹配标题的前面部分。

在此模式下,若一个窗口的标题是 无标题 - 记事本 则可使用如“无标题 - 记事本”、“无标题” 甚至是 “无” 等字符串作为窗口标题参数使用。

例如:

WinWait("无标题")

模式 2

标题的任意子串皆可。

在此模式下,若一个窗口的标题是 无标题 - 记事本 则可使用如“无标题 - 记事本”、“无标题”、“记事本” 甚至是 “本” 等字符串作为窗口标题参数使用。

eg.

WinWait("记事本")

模式 3

完全匹配标题。

在此模式下,若一个窗口的标题是 无标题 - 记事本只可使用 “无标题 - 记事本” 作为窗口标题参数使用。

模式 4

高级模式。

在此模式下,一些特殊的字符串可用来代替 窗口标题 参数,这样我们就可以使用窗口的 类别名句柄 来识别窗口了。至于 窗口标题 参数维持原样即可。

这些特殊的字符串不能含有空白符(whitespace,一般指空格、制表符、回车等)。它们分别是:

"classname=CLASSNAME"

"active"

"last" 或 ""

"classname=" 只匹配具有相同类别名的窗口。例如要识别一个类别名为 “MYCLASS1”的窗口,则可把“classname=MYCLASS1”作为窗口标题 参数使用。


"active"
表示当前激活的窗口(实际作用与默认的 WinTitleMatchMode 模式下的 "" 一样)。


"last" 使用上一次成功匹配的窗口,这样就不必三番四次地指定窗口标题和窗口文本了。例如:

AutoItSetOption("WinTitleMatchMode", 4)

WinWaitActive("无标题 - 记事本")

WinClose("last") ; 关闭前面匹配成功的记事本窗口


注意: 如果"classname=", "active", "last" 或 "" 都没有作为窗口标题出现在该参数中,则自动以 模式 1 进行匹配。

窗口句柄(Window Handles / HWNDs )

AutoIt 中的变量可用来存储窗口句柄(HWND)。所谓窗口句柄是指 Windows 自动分配给每个新创建的窗口的特殊值。窗口句柄可用来代替窗口标题参数。使用窗口句柄来代替窗口标题的好处是能够更加精确地识别窗口,比如说有时候我们会同时打开同一应用程序的多个副本,这些窗口具有完全相同的窗口标题窗口文本,这时就可以利用窗口句柄的唯一性来准确识别窗口了。另外,当使用窗口句柄代替窗口标题参数时,窗口文本参数将被完全忽略。

很多函数如 WinGetHandleWinListGUICreate 都会返回窗口句柄。这里要特别提醒大家的是,不能 简单的把窗口句柄归类为数值或者字符串,它是使用特殊的数据类型的。

注意:不管当前的 WinTitleMatchMode 被设置为何种模式,窗口句柄始终可用

示例

$handle = WinGetHandle("无标题 - 记事本", "")
WinClose($handle)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文