當我們在編寫用以實現(xiàn)自動化操作(通常是指窗口操作)的腳本的時候,經(jīng)常要解決的一個問題就是如何(在眾多窗口中)準確識別出目標窗口,一般來說我們把窗口的 標題(title) 作為它的ID,有時候只給標題還不夠,這時就需要同時給出 標題及文本(text)。要獲得某個窗口的標題是件很簡單的事情(直接就可以看到),可以使用 AutoIt 提供的 AutoIt Window Info(窗口信息工具)。大多數(shù)窗口的標題都是顯而易見的,例如系統(tǒng)自帶的記事本程序(notepad.exe),它的標題是 無標題 - 記事本,并不難理解對吧?而且一般來說這就已經(jīng)足以幫助我們完成自動化任務(wù)了。
注意:若作為參數(shù)傳遞到窗口函數(shù)的 窗口標題 和 窗口文本 都是空字符串""的話,則該函數(shù)的操作目標將會是當前激活的窗口(但設(shè)置了非默認的 窗口匹配模式(WinTitleMatchMode) 時除外)!
窗口標題及其文本是 大小寫敏感(或者說是嚴格區(qū)分大小寫)的。包括標點符號在內(nèi)您必須確保它們是完全匹配的。為了避免在這種小問題上出錯,您可以使用工具 Window Info 然后選中獲得的標題或文本,按下 ctrl-c 復制之后就可以直接粘貼到腳本中使用了。
AutoIt 的大部分窗口函數(shù)都有窗口標題和文本參數(shù),比如說下面的 WinWaitActive 函數(shù)。這個函數(shù)的功能是使腳本暫停執(zhí)行并 一直等到 指定窗口出現(xiàn)且激活為止。
WinWaitActive ( "窗口標題", ["窗口文本"], [超時時間] )
其中 窗口標題 是必須指定的參數(shù),而 窗口文本 和 超時時間 都是可選參數(shù)。不過也有些函數(shù)的 窗口文本 參數(shù)是必須指定的,如果想省略這個參數(shù)的話只需指定 "" (表示空字符串)作為參數(shù)即可。在參數(shù) 窗口文本 中指定一個空字符串或者干脆留空的話相當于告訴 AutoIt 任何文本都是有效的(反正只管標題匹配了就OK)。
下面以記事本窗口為例說明上面提到的函數(shù)的兩種用法:
WinWaitActive("無標題 - 記事本")
以及
WinWaitActive("無標題 - 記事本", "")
如果我們打些字到該窗口上,比如說“這里是足以區(qū)分其它記事本窗口的文字”,則在 Window Info 的窗口上將會顯示相關(guān)信息:
我們可以注意到 Window Info 已經(jīng) “看到” 了這個記事本窗口的標題及文本并顯示出來了。記住,凡是 Window Info Tool 能“看到”的 AutoIt 也能“看到”(指能在腳本中使用)。現(xiàn)在我們得到的這些信息已經(jīng)足以用來準確識別此窗口了(就算此時還打開了很多記事本窗口)。這時我們應(yīng)該這么使用函數(shù):
WinWaitActive("無標題 - 記事本", "這里是足以區(qū)分其它記事本窗口的文字")
作為參數(shù)使用的窗口文本必須是符合 AutoIt 的要求。一般來說有效的文本是指編輯框控件內(nèi)的文本(比如像上面的“這里是足以區(qū)分其它記事本窗口的文字”),此外還可以使用下面這些文本:
另外還有一個必須了解的技巧就是除了上面這些文本之外,很多程序窗口的標題會根據(jù)操作對象的不同而不同(通常會在默認標題后附加),因此把接在標題后的文本作為窗口文本參數(shù)使用也是可以的。
其實我們傳遞到窗口函數(shù)中的 窗口文本 參數(shù)是被 AutoIt 當作子串(substring)來處理的。還是以上面的記事本窗口為例,即使把“區(qū)分其它記事”作為窗口文本參數(shù)也是可以獲得同樣效果的。
前面提到的所有應(yīng)用都是以在 默認 模式下操作為例的,AutoIt 還提供了其它幾種 更高級
的方法,可能會稍微比這里的難一點 :)