AutoIt 支持三种"窗口匹配"模式. 若要更改此模式可通过函数 AutoItSetOption 修改 WinTitleMatchMode 属性即可.
模式 1 (默认)
只匹配标题的前面部分.
在此模式下,若一个窗口的标题是 无标题 - 记事本 则可使用如"无标题 - 记事本","无标题" 甚至是 "无" 等字符串作为 窗口标题参数使用.
例如:
WinWait("无标题")
模式 2
标题的任意子字符串皆可.
在此模式下,若一个窗口的标题是无标题 - 记事本 则可使用如"无标题 - 记事本","无标题","记事本", 甚至是 "本" 等字符串作为窗口标题参数使用.
例子:
WinWait("记事本")
模式 3
完全匹配标题.
在此模式下,若一个窗口的标题是无标题 - 记事本则 只能使用 "无标题 - 记事本" 作为窗口标题参数使用.
模式 4
(向后兼容)高级模式
已经被高级窗口描述取代,不需要设置任何模式即可使用.
模式 -1 到 -3
按照其它类型的匹配,但是强制小写匹配.
在此模式下,一些特殊的字符串可用来代替窗口标题参数,这样我们就可以使用下面的 属性 来识别一个窗口:
一个窗口中的标题参数包含一个或者多个属性,使用下列格式
[属性1:值1; 属性2:值2]
注意: 如果一个值中包含了一个 ";" 它必须是成对的(it must be doubled).
例如: 等待一个类名为 "Notepad" 的窗口
WinWaitActive("[CLASS:Notepad]", "")
例如: 关闭当前活动窗口
WinClose("[ACTIVE]", "")
例如: 等待接口(instance,原翻译为枚举)为2,窗口标题为"我的窗口" 和 类名 "我的类"的窗口
WinWaitActive("[TITLE:我的窗口; CLASS:我的类; INSTANCE:2]", "")
例如: 列出类名匹配正则表达式的窗口
WinList("[REGEXPCLASS:#\d+]")
AutoIt 中的变量可用来存储窗口句柄(HWND).所谓窗口句柄是指 Windows 自动分配给每个新创建的窗口的特殊值.窗口句柄可用来代替窗口标题参数.使用窗口句柄来代替窗口标题的好处是能够更加精确地识别窗口,比如说有时候我们会同时打开同一应用程序的多个副本,这些窗口具有完全相同的窗口标题和窗口文本,这时就可以利用窗口句柄的唯一性来准确识别窗口了. 另外,当使用窗口句柄代替窗口标题参数时,窗口文本参数将被完全忽略.
很多函数如 WinGetHandle, WinList 和 GUICreate 都会返回窗口句柄. 这里要特别提醒大家的是 不能 简单的把窗口句柄归类为数值或者字符串,它是使用特殊的数据类型的.
注意:不管当前的 WinTitleMatchMode 被设置为何种模式,窗口句柄始终可用.
示例
$handle = WinGetHandle("无标题 - 记事本", "")
WinClose($handle)