窗口标题与文本(高级)

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+]")

 

 

窗口句柄(Window Handles / HWNDs)

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

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

 

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

 

示例

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