AutoIt v3 的其中一個(gè)最優(yōu)秀的新功能就是提供了直接操作某些窗口控件的支持。我們?cè)诖翱谏夏芸吹降臇|西大多都是以下控件的一種:按鈕、列表框、文本編輯框、靜態(tài)文本等。比如說(shuō)系統(tǒng)自帶的記事本程序的主窗口也不過(guò)只是一個(gè)相對(duì)而言比較大一點(diǎn)的“編輯框(Edit)”控件罷了!正因?yàn)?AutoIt 提供了直接對(duì)控件操作的途徑,我們?cè)僖膊恍枰ㄒ膊粦?yīng)該)使用模擬鍵擊等低級(jí)的方法來(lái)操作窗口了,這使得需要實(shí)現(xiàn)窗口操作的腳本更加可靠。
注意: AutoIt 僅支持標(biāo)準(zhǔn)的 Microsoft 控件 - 有些應(yīng)用程序(的作者)自己寫(xiě)的自定義控件看起來(lái)很像是標(biāo)準(zhǔn)的 MS 控件,但卻無(wú)法被腳本程序識(shí)別,那就只能靠您的經(jīng)驗(yàn)判斷了,實(shí)踐出真理!
運(yùn)行 AutoIt Window Info 之后您可以試著把鼠標(biāo)移動(dòng)到自己感興趣的窗口上,在 Window Info 的窗口就會(huì)顯示當(dāng)前鼠標(biāo)經(jīng)過(guò)的控件的信息。這些信息包括:
如果你看到某個(gè) Control...() 函數(shù)要求提供 控件ID(ControlID)作為參數(shù)(實(shí)際上大部分控件函數(shù)都需要此參數(shù)),那么您就可以使用這些信息中的任意一種來(lái)作為參數(shù)傳遞到函數(shù)中。具體使用哪一種方法其實(shí)主要看您的個(gè)人喜好以及從 AutoIt Window Info 中能獲得的信息類(lèi)型,一般而言,最好的方法就是使用控件ID(ControlID),但如果控件ID無(wú)法獲得或者是靠控件ID還不足以保證能識(shí)別目標(biāo)控件(比如說(shuō)同時(shí)有幾個(gè)控件ID相同的控件存在,這種情況通常發(fā)生在靜態(tài)文本控件上),那么就需要換為另外的三種方法之一了。
控件 ID 是指Windows指定給每個(gè)控件的數(shù)值型標(biāo)識(shí)符(實(shí)際上就是整數(shù)值)。通常這是用來(lái)識(shí)別控件的最好的方法。除了 AutoIt Window Info 之外,還有其他的應(yīng)用程序比如某些給盲人用的讀屏軟件或者其它使用 Microsoft API 寫(xiě)的工具也能獲得控件ID。
每個(gè)標(biāo)準(zhǔn)的 Microsoft 控件都具有“類(lèi)別名”,比如“button(按鈕)”或者“edit(編輯框)”等等。在 AutoIt 中還把它跟該控件的“實(shí)例”組合起來(lái),并稱(chēng)為“ClassNameNN”。比如說(shuō)某個(gè)對(duì)話(huà)框的上面有三個(gè)按鈕,則通常它們的“ClassNameNN”就是"Button1", "Button2", "Button3"如此之類(lèi)。
當(dāng)控件ID不適用的時(shí)候就可以考慮使用這個(gè)方法(這種情況通常發(fā)生在靜態(tài)文本控件上)。
也許你也注意到 AU3Info(AutoIt Window Info) 還給出了控件上的文本信息,例如某個(gè)按鈕 Next 則在 AU3Info 上看到的就是 &Next (“&”號(hào)表示后面跟著的字符將帶有下劃線,其實(shí)我們還能在菜單和其它控件上發(fā)現(xiàn)這個(gè)符號(hào))。如果您喜歡的話(huà)也可以用這些文本代替“ClassNameNN”來(lái)識(shí)別控件,但是如果有多個(gè)控件的文本都相同的話(huà)可就有麻煩了。
如果要獲得某個(gè)控件的句柄則可使用 ControlGetHandle 函數(shù)?丶浔荳indows賦予控件的(獨(dú)一無(wú)二的)標(biāo)識(shí)符。每個(gè)被創(chuàng)建的控件都具有不同的句柄。用戶(hù)在使用控件句柄來(lái)對(duì)控件操作之前應(yīng)該確定自己對(duì)句柄是非常熟悉的。
請(qǐng)到這里 函數(shù)說(shuō)明(Function Reference) \ 窗口管理(Window Management) \ 控件(Controls) 查看控件函數(shù)的說(shuō)明。