AutoIt 简单用法-- 窗口标题与文本(高级篇)
窗口标题与文本(高级篇)
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 自动分配给每个新创建的窗口的特殊值。窗口句柄可用来代替窗口标题参数。使用窗口句柄来代替窗口标题的好处是能够更加精确地识别窗口,比如说有时候我们会同时打开同一应用程序的多个副本,这些窗口具有完全相同的窗口标题和窗口文本,这时就可以利用窗口句柄的唯一性来准确识别窗口了。另外,当使用窗口句柄代替窗口标题参数时,窗口文本参数将被完全忽略。
很多函数如 WinGetHandle、WinList 和 GUICreate 都会返回窗口句柄。这里要特别提醒大家的是,不能 简单的把窗口句柄归类为数值或者字符串,它是使用特殊的数据类型的。
注意:不管当前的 WinTitleMatchMode 被设置为何种模式,窗口句柄始终可用。
示例
$handle = WinGetHandle("无标题 - 记事本", "")
WinClose($handle)