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