出處:https://zhuanlan.zhihu.com/p/38309640
下面以使用腳本自動安裝極品五筆為例。
文章頭部提供的地址是集成了會用到的工具。
首先,腳本的第一步是運行程序。這一步要用到AU3的Run函數。
查詢了下函數手冊
Run ( "程序" , "工作目錄" , 顯示標志, 可選標志)
其中,工作目錄、顯示標志、可選標志為可選選項,可以不添加。
我們將腳本放置在極品五筆安裝程序所在目錄,這樣就不需要添加工作目錄這個參數了。
1Run("jpwb_7.0.exe")
上面的代碼用於運行極品五筆的安裝程序,運行安裝程序,接下來,就要對安裝程序的界面進行操作了。
使用窗口信息工具可以幫助分析窗口,這個程序在AutoIT工具箱中有,大家可以自己試用下,很方便的說~很簡單的,通俗易懂,是居家旅游的必備工具啊。
運行安裝程序之后,腳本需要知道接下來的操作是對那個窗口進行操作。
這一步使用到兩個函數,大家可以根據自己的需要來挑選使用哪一個。
WinWait
暫停腳本的執行直至指定窗口存在(出現)為止.
WinWait ( "窗口標題" , "窗口文本" , 超時時間)
WinWaitActive
暫停腳本的執行直至指定窗口被激活(成為活動狀態)為止.
WinWaitActive ( "窗口標題", "窗口文本", 超時時間 )
其中,窗口文本和超時時間為可選選項。
窗口腳本可以更好地幫助腳本確認窗口,超時時間可以讓腳本在暫停一段時間之后跳過該函數繼續執行。
1WinWait("下載吧 - 極品五筆 Win2000/Xp/Windows 7通用型 安裝","歡迎使用 “極品五筆” 安裝向導")
上面這句就是讓腳本程序等待一個標題為
下載吧 - 極品五筆 Win2000/Xp/Windows 7通用型 安裝
窗口文本為
歡迎使用 “極品五筆” 安裝向導
的窗口,等窗口出現之后,我們就要點擊下一步的按鈕了。
在這里,我們需要用到的函數是
ControlClick
向指定控件發送鼠標點擊命令.
ControlClick ( "標題", "文本", 控件ID , 按鈕 , 點擊次數 , X坐標 , Y坐標 )
以上參數中,按鈕即為鼠標的左右鍵,點擊次數,X坐標,Y坐標,均為可選參數。
1ControlClick("下載吧 - 極品五筆 Win2000/Xp/Windows 7通用型 安裝","","[CLASS:Button; INSTANCE:2]","left",1)
上面語句完成了點擊安裝這個步驟,認真的童鞋肯定發現了大D在“控件ID”這個參數上沒有使用“1”。而是使用了"[CLASS:Button; INSTANCE:2]"這個高級模式的ID,至於為什么這么用,大D將會在后續文章中說到。敬請期待。接下來,安裝程序對軟件進行安裝。隨后進入完成安裝界面。
使用窗口信息化工具分析安裝完成界面,可見設置主頁的這個選項是一個按鈕,那么,即可以使用ControlClick來完成,也可以使用另外一個函數。
ControlCommand
向指定控件發送命令.
ControlCommand ( "窗口標題", "窗口文本", 控件ID, "命令" , "選項")
其中,最后一個參數——選項為可選參數。基本不用。
這里放出代碼
1ControlCommand("下載吧 - 極品五筆 Win2000/Xp/Windows 7通用型 安裝","正在完成 “極品五筆” 安裝向導",1204,"uncheck")
上面的代碼中,最后一個參數——命令為"uncheck",這個就是用於取消單選框的選擇狀態。
該函數的命令有
命令, 選項返回值"IsVisible", ""若目標控件可見則返回值為1,否則為0."IsEnabled", ""若目標控件可用(未被禁用)則返回值為1,否則為0."ShowDropDown", ""彈出/下拉 組合框(ComboBox)的列表."HideDropDown", ""收回/隱藏 組合框(ComboBox)的列表."AddString", '字符串'在 ListBox 或 ComboBox 的編輯框后面附加指定字符串."DelString", 出現次序刪除在 ListBox 或 ComboBox 的編輯框中指定的字符串(從0開始,0 代表第一個)."FindString", '字符串'返回在 ListBox 或 ComboBox 的編輯框中與指定字符串匹配項目的出現次序(從0開始,0 代表第一個)."SetCurrentSelection", 出現次序通過指定出現次序(從0開始,0 代表第一個)把 ListBox 或 ComboBox 的當前選擇項設為指定的項目."SelectString", '字符串'通過指定字符串把 ListBox 或 ComboBox 的當前選擇項設為匹配字符串的項目."IsChecked", ""若目標按鈕(復選框/單選框)被選中則返回值為1,否則為0."Check", ""使目標按鈕(復選框/單選框)變為選中狀態."UnCheck", ""使目標按鈕(復選框/單選框)變為非選中狀態."GetCurrentLine", ""返回在目標編輯框中插入符(caret,光標)的所在行號."GetCurrentCol", ""返回在目標編輯框中插入符(caret,光標)的所在列號."GetCurrentSelection", ""返回 ListBox 或 ComboBox 控件當前選中的項目名."GetLineCount", ""返回目標編輯框中的總行數."GetLine", 行號返回目標編輯框中指定行的文本內容."GetSelected", ""返回目標編輯框中的(用戶用鼠標或其它方式)選定的文本."EditPaste", '字符串'在目標編輯框中插入符(caret)所在位置后插入指定字符串."CurrentTab", ""返回在 SysTabControl32 控件中當前顯示的標簽編號(從1開始,1代表左邊第一個)."TabRight", ""使 SysTabControl32 控件切換到(右邊的)下一個標簽."TabLeft", ""使 SysTabControl32 控件切換到(左邊的)下一個標簽."SendCommandID", 命令 ID模擬 WM_COMMAND 消息. 通常用於 ToolbarWindow32 控件 - 使用Au3Info的工具欄標簽得到命令ID.點擊完成按鈕的代碼大D就不再敖述了。
點擊完成按鈕之后,彈出了一個IE瀏覽器窗口,這個很惱火的說,那就干掉這個窗口,這里要用到AU3中的進程管理函數。
這里大D先說方法:
第一種方法:檢測窗口文本,等待指定窗口出現,然后關閉。
第二種方法:檢測進程名是否存在,存在則關閉進程。
先列出需要用到的函數。
ProcessExists
檢查指定進程是否存在.
ProcessExists ( "進程" )
ProcessClose
終止某個進程.
ProcessClose ( "進程")
以上兩個函數,每隔250毫秒對進程進行檢測。
兩種方法的具體實現代碼就不寫出來了。
相信大家肯定能寫出來。
最后放出大D寫的這個安裝腳本的源碼。