AutoIt 有個非常神奇的功能,它可以模擬人在電腦前鍵盤與滑鼠操作,把圖形介面的使用自動化。這個功能可以用來寫遊戲外掛,自動一直賺錢打寶,然後就可以拿去賣台幣了,另一方面這項功能也用來自動測試其他軟體的圖形介面是否符合某些規範,不用測試人員花時間親手操作。
以下是模擬鍵盤操作的程式範例:
範例 2-1
按下 .au3 檔後電腦就跟中毒一樣,自己操作了起來,結束時螢幕上是記事本,炫耀著「看我多厲害!」這三行程式碼好像把我們開記事本打字的動作拆解出來,你可以按 Win+R 打 notepad.exe 然後 Enter, 等記事本視窗打開再打字,流程就跟三行程式碼一致。
下面是自動打字而且可以存檔的範例,注意這段程式只在 Windows 7 有效,另外請確認鍵盤沒有開點字輸入模式,因為它會竄改鍵盤訊息,讓記事本收到不正確的指令,如按 S 變成按第三點的單引號。
範例 2-2
在 XP 要執行它的話,按 S 要改成按 Y, 因為 XP 記是本是「是(Y)」按鈕。若執行無誤,「自動記事本.txt」會被存到目前記事本另存新檔時第一眼看到的資料夾裡,比如上次另存十目錄設為桌面,這次就也存到桌面。
這次操作結束後回到 .au3 在的資料夾,好像一切沒發生過,是不是有點害怕電腦被怎樣了?上列二例最奇妙的函式就是 Send. 它可以對目前最上層的視窗發送按鍵消息,參數的字串如何寫有一定規則。下面寫出幾個易懂的原則,其他詳細規定請參考 Send Key list 。
字串裡除了組合鍵和大括號夾住的特殊指示外,其他地方打什麼就送什麼。
注意如果打了大寫字母如 S, 會變成送出 Shift 與 S 的組合鍵。
特殊按鍵名稱請參考本文最後面「模擬按鍵列表」,或者參閱剛才的網頁。
另外連續發送按鍵可以一口氣寫完也可以分開寫,如剛才最後兩行可以合併成 Send("自動記事本{ENTER}") 效果一樣。讀完這段之後建議讀者試著在記事本打別的內容,或者發送 ^s 也就是 Ctrl+S 來存檔然後關閉。
沒有被著墨的 WinWait 開頭的函式,名稱看起來相當直覺,但卻非常關鍵。如果沒有等到想要的視窗出現就發送下次指令,這些指令就會被上一個視窗接收,如果這些按錯鍵被拒絕無效就還好,怕的是產生不預期的效果,就跟手殘按錯的道理是一樣的!想要嘗試很酷的自動操作功能時需要注意:
別一次寫完所有程式,要一行一行測試,確定到目前為止每個視窗都按照意思開關,每個按鍵都按照意思送達正確的視窗。
測試中途總有失敗,遇到 WinWait 時應在其後加個暫時的 MsgBox, 萬一 MsgBox 沒有跳出視窗,就立刻到工作管理員的「處理程序」去收屍吧,砍了 AutoIt3.exe 程序並宣告測試失敗。不這樣做將讓這些 AutoIt 程序一直等待,最後我也無法保證電腦會如何……
最後,附上高生旺 老師講義中的「模擬按鍵列表」。最前面 ALT, SHIFT, CTRL, WINDOWS 是用來寫組合鍵的,後面 {ALT} 這種寫法就只發送單個 ALT 鍵立刻放開。
04. 模擬按鍵列表.txt
指令 按鍵
! 組合鍵中的 ALT
+ 組合鍵中的 SHIFT
^ 組合鍵中的 CTRL
# 組合鍵中的 WINDOWS
{!} !
{#} #
{+} +
{^} ^
{{} {
{}} }
{SPACE} 空白
{ENTER} 主鍵盤 ENTER
{ALT} ALT
{BACKSPACE} or {BS} BACKSPACE 或稱倒退鍵
{DELETE} or {DEL} DELETE
{UP} 上
{DOWN} 下
{LEFT} 左
{RIGHT} 右
{HOME} HOME
{END} END
{ESCAPE} or {ESC} ESCAPE
{INSERT} or {INS} INS 或稱插入鍵
{PGUP} Page Up
{PGDN} Page Down
{F1} 到 {F12} 功能鍵 1 到 12
{TAB} TAB
{PRINTSCREEN} 畫面擷取
{LWIN} 左 WINDOWS
{RWIN} 右 WINDOWS
{NUMLOCK on} NUMLOCK (on/off/toggle)
{CAPSLOCK off} CAPSLOCK (on/off/toggle)
{SCROLLLOCK toggle} SCROLLLOCK (on/off/toggle)
{BREAK} Ctrl+Break
{PAUSE} PAUSE
{NUMPAD0} 到 {NUMPAD9} 九宮鍵數字
{NUMPADMULT} 九宮鍵乘號
{NUMPADADD} 九宮鍵加號
{NUMPADSUB} 九宮鍵減號
{NUMPADDIV} 九宮鍵除號
{NUMPADDOT} 九宮鍵小數點
{NUMPADENTER} 九宮鍵 ENTER
{APPSKEY} 快顯
{LALT} 左 ALT
{RALT} 右 ALT
{LCTRL} 左 CTRL
{RCTRL} 右 CTRL
{LSHIFT} 左 SHIFT
{RSHIFT} 右 SHIFT
{SLEEP} 休眠
{ALTDOWN} 按住 ALT 直到 {ALTUP}
{SHIFTDOWN} 按住 SHIFT 直到 {SHIFTUP}
{CTRLDOWN} 按住 CTRL 直到 {CTRLUP}
{LWINDOWN} 按住左 WINDOWS 直到 {LWINUP}
{RWINDOWN} 按住右 WINDOWS 直到 {RWINUP}
{ASC nnnn} ALT + 九宮鍵數字 nnnn
{BROWSER_BACK} 點瀏覽器「上一頁」按鈕
{BROWSER_FORWARD} 點瀏覽器「下一頁」按鈕
{BROWSER_REFRESH} 點瀏覽器「重新整理」按鈕
{BROWSER_STOP} 點瀏覽器「停止」按鈕
{BROWSER_SEARCH} 點瀏覽器「搜尋」按鈕
{BROWSER_FAVORITES} 點瀏覽器「我的最愛」按鈕
{BROWSER_HOME} 開啟瀏覽器並進入首頁
{VOLUME_MUTE} 靜音
{VOLUME_DOWN} 降低音量
{VOLUME_UP} 調高音量
{MEDIA_NEXT} Media Player 下一個音軌
{MEDIA_PREV} Media Player 上一個音軌
{MEDIA_STOP} Media Player 停止
{MEDIA_PLAY_PAUSE} Media Player 播放/暫停
{LAUNCH_MAIL} 打開店子郵件
{LAUNCH_MEDIA} 打開 Media Player
{LAUNCH_APP1} 打開第一個自訂應用程式
{LAUNCH_APP2} 打開第二個自訂應用程式
註:有些鍵盤上會有 FN (footnote) 鍵,無法在此模擬。另外有一個 {OEM_102} 指令未列入,因為好像牽涉到別的語言。也可以參閱 Send Key list 英文版以獲取詳盡且即時的資訊。
回 · 我的 AutoIt 學習筆記 這一篇文章封面