模擬鼠標點擊(按鈕等)控件
既然是模擬用戶操作,自然就包括了模擬鼠標點擊在內。
適用命令/函數:Click/MouseClick/ControlClick
其中Click/MouseClick用來模擬用戶的物理操作(點擊),把鼠標點擊事件發送到指定坐標位置(相對當前窗口或絕對位置)上,但這種方法並不能保證100%的准確性,屏幕分辨率、用戶干擾和系統環境等都會影響到它們的執行結果,而ControlClick則直接把鼠標點擊事件發送到目標窗口的目標控件上,因而更准確,一般我們不考慮使用坐標位置方式的點擊,下面僅以ControlClick為例說明:
AHK:
ControlClick [, 目標控件或坐標位置, 窗口標題, 窗口文本, 鼠標按鈕, 點擊次數, 選項,排除標題, 排除文本]
AU3:
ControlClick ( "窗口標題", "窗口文本", 控件ID [, 按鈕] [, 點擊次數]] )
對AHK而言,“目標控件”參數是指要點擊的控件的類別名(ClassNN)或控件文本,另外還可以使用控件句柄(若用的是控件句柄則第一個參數需留空,並在第二個參數中使用ahk_id %控件句柄%)。
Q:用什么工具來獲得目標控件的這些信息呢?
A:AHK用戶請使用 AutoIt3 Window Spy,AU3用戶則請使用AutoIt Window Info,你可以在相應的開始菜單項目里找到它們,或者到安裝目錄下尋找。
Q:如何使用這兩個工具?
A:先打開你要進行操作的目標窗口,然后運行 AutoIt3 Window Spy 或 AutoIt Window Info,接下來就是把鼠標移到目標控件上(比如某個按鈕):
AutoIt3 Window Spy 使用演示截圖:
AutoIt Window Info 使用演示截圖:
現在我們假設已打開並激活了“系統屬性”窗口,而任務是點擊它的“確定”按鈕,則可用以下幾種方法:
【示例4.1.1】
AHK:
ControlClick, 確定, 系統屬性
ControlClick, Button2, 系統屬性
AU3:
ControlClick("系統屬性", "", 1)
ControlClick("系統屬性", "", "Button2")
ControlClick("系統屬性", "", "確定")
提醒:即使目標窗口或控件是隱藏狀態,ControlClick命令還是可以“點擊”目標控件,但不能保證成功率。
2、模擬鍵盤操作
鍵盤也是我們在操作窗口時會用到的工具,比如說在安裝軟件的時候經典的“一路回車大法”。下面簡單介紹一下模擬鍵盤操作的方法。
Send
這個是最直接的方法,就是模擬用戶按鍵行為,直接發送鍵擊命令,用法請參考官方文檔,在此不予說明。
最簡單的應用――按回車:
AHK:
Run, Control Sysdm.cpl
WinWait, 系統屬性
Send, {Enter}
AU3:
Run("Control Sysdm.cpl")
WinWait("系統屬性")
Send("{Enter}")
常見的組合鍵――Alt+X / Ctrl+N等等,在安裝軟件的時候經常會有提供一個按鈕“下一步(N)”,表示按下Alt+N即可觸發等同於點擊該按鈕的效果,其它的可觸類旁通。以打開記事本窗口的“文件”菜單為例:
AHK:
Run, Notepad
WinWait, 無標題 - 記事本
WinActivate, 無標題 - 記事本
WinWaitActive, 無標題 - 記事本
Send, !f
AU3:
Run("Notepad")
WinWait("無標題 - 記事本")
WinActivate("無標題 - 記事本")
WinWaitActive("無標題 - 記事本")
Send("!f")