AutoIt 腳本可創(chuàng)建(由窗口及其控件組成的)簡單的圖形用戶界面(GUI)。
GUI 可由一個或多個 窗口 組成,這些窗口又帶有一個或多個控件。GUI是靠“事件驅動”實現與用戶的交互的,比如像點擊按鈕這樣的動作就會引發(fā)一個事件。程序在空閑狀態(tài)時等待事件的發(fā)生,捕捉到事件時則根據事件執(zhí)行相關操作。您可以猜想自己在門邊等郵差(一直坐在那兒直到有信被送進來為止),等郵差把信送來了,您就要閱讀該信并決定下一步做什么,這就跟GUI的原理一樣了:您等待的是郵差,而GUI則等待事件,
當然,在GUI(指程序的界面)運行時您也可以選擇要做的其它任務,比如使用GUI函數創(chuàng)建一個自動更新的動態(tài)的進度條,同時還可執(zhí)行其它復雜的任務。
所有用戶應該都對控件非常了解了,在窗口上能被點擊或進行其它交互的部分都是控件的一種。AutoIt 可創(chuàng)建的控件類型有如下幾種(您肯定已在其它Windows程序中見過它們了):
| 純文字控件 | |
| 按鈕 | |
| 單行編輯框,可供輸入文字 | |
| 多行編輯框,可供輸入文字 | |
| 方框按鈕,可被選中或取消選中 | |
| 圓形按鈕(通常幾個一組,每次只能激活/選中其中一個) | |
| 組合框,帶有下拉列表 | |
| 列表框 | |
| 日期選擇 | |
| 圖片 | |
| 圖標 | |
| 進度條 | |
| 標簽,每個標器都可包含一組控件 | |
| 可附加到輸入型控件上 | |
| 顯示 AVI 格式的剪輯 | |
| 位于窗口頂部的菜單 | |
| 當在窗口上點擊右鍵時出現的菜單 | |
| 類似于Windows的資源管理器(樹型視圖) | |
| 類似于Windows的音量控件(滑動條) | |
| 按列顯示信息的控件(列表視圖) | |
| ListView控件的項目 | |
| 虛擬的用戶控件 |
下面是一個單窗口的GUI示例,它包含了許多被AutoIt支持的控件。從中我們可以看到 AutoIt 確實可以創(chuàng)建內容非常豐富的GUI!
使用 GUICtrlCreate... 等函數即可創(chuàng)建控件。在創(chuàng)建時函數會返回 控件ID。關于控件ID有幾個注意事項:
下面這些就是可用于創(chuàng)建GUI的函數。但這些都是比較初級的應用,如果您已經準備好創(chuàng)建更高級的GUI,則還有其它高級的函數。
| 函數 | 解釋 |
| GUICreate | 創(chuàng)建一個窗口。 |
| GUICtrlCreate... | 創(chuàng)建各種控件。 |
| GUISetState | 顯示或隱藏窗口。 |
| GUIGetMsg | 通知GUI檢測是否有事件發(fā)生(僅用于消息循環(huán))。 |
| GUICtrlRead | 讀取控件數據。 |
| GUICtrlSetData | 設置/更改 控件的數據。 |
| GUICtrlSet... | 對控件進行各種屬性設置(顏色、風格等等)。 |
在您著手編寫任何GUI腳本之前別忘了先包含文件 GUIConstants.au3 到腳本開頭位置(該文件包含了在編寫GUI程序時要用到的所有變量和常量)。
讓我們先來創(chuàng)建一個窗口吧,把它命名為“您好”,設置其長寬分別為200和100個象素。當窗口被創(chuàng)建時它是被隱藏的,所以我們還要先把它給“show(顯示)”出來。
#include <GUIConstants.au3>
GUICreate("您好", 200, 100)
GUISetState(@SW_SHOW)
Sleep(2000)
如果運行上面的腳本您會看到出現一個窗口并在兩秒后消失?磥磉不是很有意思哦...那讓我們嘗試增加一些文字和一個確定按鈕到窗口上吧!我們把文字加到 30, 10 這個位置并把按鈕放到 70, 50 這個位置,按鈕寬度設為60個象素。
#include <GUIConstants.au3>
GUICreate("您好", 200, 100)
GUICtrlCreateLabel("最近過得怎樣?", 30, 10)
GUICtrlCreateButton("還OK吧", 70, 50, 60)
GUISetState(@SW_SHOW)
Sleep(2000)
好,現在看來還不錯。但是怎樣使這個GUI能響應我們點擊按鈕的事件呢?這時我們必須先決定究竟如何處理事件:要么通過 消息循環(huán)(MessageLoop) 要么通過 OnEvent 函數。
正如上面所提到的那樣,我們有兩種基本的GUI模式:消息循環(huán)(MessageLoop)模式和 OnEvent 模式。這兩種模式是響應GUI事件的不同的實現方式。具體選擇哪一種模式主要看您的 個人喜好 或者您想要創(chuàng)建的GUI類型。這兩種模式都能用于創(chuàng)建任何您想要的GUI,只不過某些時候使用其中一個會比另外一個要好用些。
消息循環(huán)是默認的模式。若要切換為 OnEvent 模式請使用 Opt("GUIOnEventMode", 1) 語句。
消息循環(huán)模式(默認)
在消息循環(huán)模式下,腳本大部分時間都在執(zhí)行一個周期非常短的循環(huán),這個循環(huán)通知GUI使用 GUIGetMsg (截獲消息)函數。當某個事件發(fā)生時 GUIGetMsg 函數把消息作為返回數值返回(比如某個按鈕被按下、GUI被關閉,等等)。
在此模式下,只有當我們頻繁地使用 GUIGetMsg 函數時才有可能接收到事件,因此您必須確保在每一秒內都有數次調用該函數,否則您的 GUI 將無法響應事件。
這一模式最適合用于那些以 GUI 為重點的腳本中,并且您最關心的就是等待用戶事件。
如需了解關于 消息循環(huán)模式 的更詳細的解釋請到 此頁 查看。
OnEvent 模式
在OnEvent模式下,腳本并不需要頻繁地要求GUI檢查是否有任何事件發(fā)生(并根據返回信息處理事件),而是僅當某個事件發(fā)生時GUI才臨時性暫停腳本并調用一個用戶預定義的函數來處理該事件。例如,假定用戶點擊了按鈕1則GUI將暫停主腳本并調用某個預定義的用戶函數來處理按鈕1事件。當該函數完成處理操作后才回到主腳本繼續(xù)執(zhí)行。這個模式比較類似 Visual Basic 的窗體方法。
這一模式最適合用于那些 GUI 處于第二重要地位的腳本中,并且您的腳本需要優(yōu)先執(zhí)行其它任務。
如需了解關于 OnEvent模式 的更詳細的解釋請到 此頁 查看。
瓮安县| 仁怀市| 巴东县| 江达县| 图们市| 古蔺县| 普定县| 洪雅县| 望江县| 乐安县| 罗源县| 宁城县| 镇沅| 宁德市| 安丘市| 武义县| 汪清县| 普兰店市| 台前县| 重庆市| 利津县| 正镶白旗| 工布江达县| 蒙城县| 漳州市| 六盘水市| 安义县| 隆林| 江山市| 云龙县| 台州市| 武穴市| 嘉善县| 儋州市| 集贤县| 同江市| 东阿县| 吴忠市| 泉州市| 弥勒县| 六枝特区|