AutoIt 支持四種“窗口匹配”模式。若要更改此模式可通過函數(shù) AutoItSetOption 修改 WinTitleMatchMode 屬性即可。
模式 1 (默認)
只匹配標題的前面部分。
在此模式下,若一個窗口的標題是 無標題 - 記事本 則可使用如“無標題 - 記事本”、“無標題” 甚至是 “無” 等字符串作為窗口標題參數(shù)使用。
例如:
WinWait("無標題")
模式 2
標題的任意子串皆可。
在此模式下,若一個窗口的標題是 無標題 - 記事本 則可使用如“無標題 - 記事本”、“無標題”、“記事本” 甚至是 “本” 等字符串作為窗口標題參數(shù)使用。
eg.
WinWait("記事本")
模式 3
完全匹配標題。
在此模式下,若一個窗口的標題是 無標題 - 記事本 則只可使用 “無標題 - 記事本” 作為窗口標題參數(shù)使用。
模式 4
高級模式。
在此模式下,一些特殊的字符串可用來代替 窗口標題 參數(shù),這樣我們就可以使用窗口的 類別名 和 句柄 來識別窗口了。至于 窗口標題 參數(shù)維持原樣即可。
這些特殊的字符串不能含有空白符(whitespace,一般指空格、制表符、回車等)。它們分別是:
"classname=CLASSNAME"
"active"
"last" 或 ""
"classname=" 只匹配具有相同類別名的窗口。例如要識別一個類別名為 “MYCLASS1”的窗口,則可把“classname=MYCLASS1”作為窗口標題 參數(shù)使用。
"active" 表示當前激活的窗口(實際作用與默認的 WinTitleMatchMode 模式下的 ""
一樣)。
"last" 使用上一次成功匹配的窗口,這樣就不必三番四次地指定窗口標題和窗口文本了。例如:
AutoItSetOption("WinTitleMatchMode", 4)
WinWaitActive("無標題 - 記事本")
WinClose("last") ; 關(guān)閉前面匹配成功的記事本窗口
注意: 如果"classname=", "active",
"last" 或 "" 都沒有作為窗口標題出現(xiàn)在該參數(shù)中,則自動以 模式 1 進行匹配。
AutoIt 中的變量可用來存儲窗口句柄(HWND)。所謂窗口句柄是指 Windows 自動分配給每個新創(chuàng)建的窗口的特殊值。窗口句柄可用來代替窗口標題參數(shù)。使用窗口句柄來代替窗口標題的好處是能夠更加精確地識別窗口,比如說有時候我們會同時打開同一應(yīng)用程序的多個副本,這些窗口具有完全相同的窗口標題和窗口文本,這時就可以利用窗口句柄的唯一性來準確識別窗口了。另外,當使用窗口句柄代替窗口標題參數(shù)時,窗口文本參數(shù)將被完全忽略。
很多函數(shù)如 WinGetHandle、WinList 和 GUICreate 都會返回窗口句柄。這里要特別提醒大家的是,不能 簡單的把窗口句柄歸類為數(shù)值或者字符串,它是使用特殊的數(shù)據(jù)類型的。
注意:不管當前的 WinTitleMatchMode 被設(shè)置為何種模式,窗口句柄始終可用。
示例
$handle = WinGetHandle("無標題 - 記事本", "")
WinClose($handle)