零、AutoIT v3在線中文手冊
https://www.jb51.net/shouce/autoit/
番外:https://www.robvanderwoude.com/
一、AutoIT可以干啥
1.運行Windows 及 DOS 下的可執行文件
2.模擬鍵擊動作(支持大多數的鍵盤布局)
3.模擬鼠標移動和點擊動作
4.對窗口進行移動、調整大小和其它操作
5.直接與窗口的“控件”交互(設置/獲取文字、移動、關閉等)
6.配合剪貼板進行剪切/粘貼文本操作
7.對注冊表進行操作
二、如何使用AutoIT
1.安裝:
百度下載安裝or(http://forspeed.onlinedown.net/down/autoit-v3-setup.zip 解壓下一步安裝即可)
2.運行:
a.桌面雙擊運行
b.dos命令調用執行
3.快速開始:
注:autoIT關鍵字不區分大小寫;autoIT以縮進來表示代碼塊;$CmdLine[0] 保存着命令行中參數的個數,$CmdLine[1] 是第 1 個參數,
$CmdLine[2] 則是第 2 個參數……;
a.注釋:
autoIT中以分號為單行注釋,注釋掉的內容不會被執行
b.信息彈窗——MsgBox:
; 這是我寫的第二個腳本(帶自定義函數) MsgBox(0, "我是彈窗標題", "我是彈窗內容") ; 函數名調用 TestFunc() Func TestFunc() MsgBox(0, "我是函數調用彈窗標題", "我是函數調用彈窗內容") EndFunc
c.腳本編譯:
開始菜單點擊Compile Script to .exe(x64),選擇如下(ico可以不選),后點擊convert,生成如第二張圖的可執行文件
生成的可執行文件即可脫離autoIT安裝環境而執行
4.窗口信息工具(AutoIt Window Info):
開始菜單點擊AutoIt Window Info(x64),打開窗口信息工具如下
窗口信息工具可以獲取的窗口信息如下:
5.窗口標題與文本
注:窗口標題和文本是嚴格區分大小寫的;窗口信息工具中可以直接復制標題等
WinWaitActive ( "窗口標題", ["窗口文本"], [超時時間] ):使腳本暫停執行並 一直等到 指定窗口出現且激活為止
一般來說有效的文本是指編輯框控件內的文本,此外還可以使用下面這些文本:
- 按鈕上的文本,比如 &Yes、&No、&Next、確定(&O) 等(“&”號后的字符將帶有下划線)
- 對話框上的文本,比如 “是否要繼續?”
- 其它控件上的文本
a.AutoItSetOption("屬性", 參數):調整各種函數/參數的運作方式
參數
屬性 | 要改變的選項。請查看下面的注意部分。 |
參數 | 相關參數(因設置的屬性不同而不同)。請查看下面的注意部分。 |
返回值
返回上一次設置的值。
注意
可用縮寫函數 Opt() 代替 AutoItSetOption()(兩者實際是同一函數).
如果指定一個未知屬性則 AutoIt 將會暫停執行並顯示錯誤信息。有效的屬性包括:
屬性 | 參數 |
CaretCoordMode | 設置用於caret(插入符)函數的坐標參照,可以是絕對位置也可以是相對當前激活窗口的坐標位置。 0 = 相對激活窗口的坐標 1 = 屏幕的絕對位置(默認) 2 = 相對激活窗口客戶區的坐標 |
ColorMode | 設置要使用的顏色模式,RGB 或 BGR。RGB 是默認的模式,但老版本的 AutoIt(3.0.102 之前)是以 BGR 為默認模式: 0 = 顏色值以 RGB 格式表示(0xRRGGBB)(默認) 1 = 顏色值以 BGR 格式表示(0xBBGGRR) (用於舊版的 AutoIt) |
ExpandEnvStrings | 更改字面字符串和 % 符號的解釋方式。默認情況下字符串按原文解釋,此選項允許您在字符串中使用形如 %environment% 這樣的環境變量,例如 "臨時文件夾的路徑是: %temp%"。 1 = 展開環境變量(類似於 AutoIt v2) 0 = 不展開展環境變量(默認) 若未設置此選項則要實現類似功能的方法是:"臨時文件夾的路徑是: " & EnvGet("temp") |
ExpandVarStrings | 更改字面字符串和變量/宏($ 和 @)符號的解釋方式。默認情況下字符串按原文解釋,此選項允許您在字符串中使用變量和宏,例如 "變量 var1 的值是 $var1$"。 1 = 展開變量(在此模式下如果要表示 $ 或 @ 本身則請用連續兩個相應符號表示,例如:"這里有一個美元符號 $$")。 0 = 不展開變量(默認) |
FtpBinaryMode | 調整FTP文件的傳輸模式。 1 = 二進制(默認) 0 = ASCII |
GUICloseOnESC | 當用戶在一個GUI窗口(處於激活狀態時)按下 ESC 鍵則 $GUI_EVENT_CLOSE 消息將被發送。此選項用以切換這一行為。 1 = 在按下 ESC 時發送消息 $GUI_EVENT_CLOSE(默認). 0 = 在按下 ESC 時不發送消息 $GUI_EVENT_CLOSE |
GUICoordMode | 設置用於 GUICtrlSetPos 函數的坐標參照。 1 = 絕對坐標(默認)將相對於對話框。 0 = 相對於上一個控件的起始位置(左上角)。 2 = 相對當前單元格的位置。若參數“左側”或“上方”指定為 -1則並不會增加起始位置,因此下一行應該用 -1,0 來表示;下一個單元格則是 0,-1;當前單元格則是 -1,-1 |
GUIOnEventMode | 啟用/取消 OnEvent 函數 0 = (默認)取消。 1 = 啟用。 |
GUIResizeMode | 更改控件大小調整的模式。 0 = (默認)不調整 <1024 = 詳情請查看 GUICtrlSetResizing 函數的說明。 |
MouseClickDelay | 更改每個鼠標點擊命令之間的延遲時間長度。 以毫秒為單位(默認值 = 10)。 |
MouseClickDownDelay | 更改在松開按鍵之前按住按鈕的時間長度。 以毫秒為單位(默認值 = 10)。 |
MouseClickDragDelay | 更改鼠標開始拖曳到結束拖曳之間的時間長度。 以毫秒為單位(默認值 = 250)。 |
MouseCoordMode | 設置用於鼠標函數的坐標參照,可以是絕對位置也可以是相對當前激活窗口的坐標位置。 0 = 相對激活窗口的坐標 1 = 屏幕的絕對位置(默認) 2 = 相對激活窗口客戶區的坐標 |
MustDeclareVars | 如果設置了此選項為1則所有變量在使用之前必須先使用 Dim/Local/Global 聲明,這將有助於減少各種因誤拼變量而引起的bug的出現。 1 = 變量必須先聲明 0 = 變量不需預先聲明(默認) |
OnExitFunc | 設置在 AutoIt 退出時將調用的函數(默認值為 OnAutoItExit). |
PixelCoordMode | 設置用於象素函數的坐標參照,可以是絕對位置也可以是相對當前激活窗口的坐標位置。 0 = 相對激活窗口的坐標 1 = 屏幕的絕對位置(默認) 2 = 相對激活窗口客戶區的坐標 |
RunErrorsFatal | 設置腳本在遇到嚴重錯誤時是否自動終止(比如在 Run/RunWait 函數因為 路徑錯誤/找不到文件/登陸帳號錯誤 而導致執行失敗時): 1 = 嚴重(致命性)錯誤(默認) 0 = 靜默(普通的)錯誤(@error 將設為 1) |
SendAttachMode | 指定在使用 Send() 函數時 AutoIt 是否捆綁(attach)輸入線程。當不捆綁的時候(默認模式 = 0)對 capslock/scrolllock/numlock 等按鍵狀態的檢測將是不准確的(指在 NT4 下)。不過,在設置捆綁模式 = 1的時候,Send("{... down/up}") 等語法將不被支持,在發送按鍵的時候也可能會導致系統掛起等問題。至於 ControlSend() 函數則 總是 捆綁線程的,而且不受此模式設置的影響。 0 = 不捆綁(默認) 1 = 捆綁 |
SendCapslockMode | 指定是否讓 AutoIt 在執行 Send 函數之前保存大小寫切換鍵(CapsLock)的狀態並在完成操作后恢復到原來的狀態。 0 = 不保存/恢復 1 = 保存並恢復(默認) |
SendKeyDelay | 更改發送鍵擊命令之間的延遲時間長度。 以毫秒為單位(默認值 = 5)。設置此值為0時也許會無效,這時請使用1代替。 |
SendKeyDownDelay | 更改在每次鍵擊期間(松開按鍵之前)按住按鍵的時間長度。對於一些需要花費一定時間才能注冊鍵擊的應用程序(以及各種游戲)您可能就要提高這一數值。 以毫秒為單位(默認值 = 1)。 |
TrayIconDebug | 在托盤圖標上顯示當前腳本執行到的那一行的相關信息(工具提示)以助調試。 0 = 不顯示調試信息(默認) 1 = 顯示調試信息 |
TrayIconHide | 隱藏 AutoIt 托盤圖標。注意:托盤圖標仍會在程序剛運行時出現大約 750 毫秒。 0 = 顯示托盤圖標(默認) 1 = 隱藏托盤圖標 |
WinDetectHiddenText | 指定是否讓隱藏的窗口文本也能被窗口匹配函數“看見”(可用於窗口文本參數)。 0 = 不檢測隱藏文本(默認) 1 = 檢測隱藏文本 |
WinSearchChildren | 允許窗口搜索程序在搜索頂層窗口的同時也搜索子窗口。 0 = 僅搜索頂層窗口(默認) 1 = 搜索頂層窗口及子窗口。 |
WinTextMatchMode | 更改窗口函數在執行搜索操作時的窗口文本匹配模式。 1 = 完全匹配(較慢)模式(默認) 2 = 快速模式 在快速匹配模式下,AutoIt 將只能“看見”對話框文本、按鈕文本和某些控件的標題,而在默認模式下則能檢測到更多的文本(例如記事本窗口的內容)。 如果在執行較多窗口的搜索操作時遇到性能(指速度)上的問題,那么您就應該考慮使用快速模式。 |
WinTitleMatchMode | 更改窗口函數在執行搜索操作時的標題匹配模式。 1 = 只匹配標題的前面部分(默認) 2 = 標題的任意子串皆可匹配 3 = 完全匹配標題 4 = 高級模式,詳情請查看 窗口標題與文本(高級篇)。 |
WinWaitDelay | 更改每次成功執行窗口相關操作后的延遲時間長度。 以毫秒為單位(默認值 = 250)。 |
b.WinWait四種模式
模式1(默認):只匹配標題的前面部分(默認)
模式2: 標題的任意子串皆可匹配
模式3:完全匹配標題
模式4:高級模式
"classname=" 只匹配具有相同類別名的窗口。例如要識別一個類別名為 “MYCLASS1”的窗口,則可把“classname=MYCLASS1”作為窗口標題 參數使用。"active" 表示當前激活的窗口(實際作用與默認的 WinTitleMatchMode 模式下的 "" 一樣)。"last" 使用上一次成功匹配的窗口,這樣就不必三番四次地指定窗口標題和窗口文本了。
AutoItSetOption("WinTitleMatchMode", 4)
WinWaitActive("demo")
WinWait("classname=Notepad++","",5) ;匹配classname是Notepad++的窗口
WinClose("last") ;關閉前面匹配成功的記事本窗口
6.控件
注:AutoIt 僅支持標准的 Microsoft 控件 - 有些應用程序(的作者)自己寫的自定義控件看起來很像是標准的 MS 控件,但卻無法被腳本程序識別,那就只能靠您的經驗判斷了,實踐出真理!
a.控件的信息包括:
- 控件 ID(Control ID):窗口信息工具獲取
- 類別名(ClassNameNN):窗口信息工具獲取
- 文本(Text):窗口信息工具獲取
- 控件句柄 (HWND):使用 ControlGetHandle 函數獲取,ControlGetHandle ( "窗口標題", "窗口文本", 控件ID)
b.ControlClick ( "窗口標題", "窗口文本", 控件ID [, 按鈕] [, 點擊次數]] ):向指定控件發送鼠標點擊命令
參數
窗口標題 | 目標窗口標題。 |
窗口文本 | 目標窗口文本。 |
控件ID | 目標控件。請查看關於 控件 的說明。 |
按鈕 | [可選參數] 要點擊的按鈕,可以是 "left"(左鍵)、"right"(右鍵) 或 "middle"(中鍵)。默認值為 left(左鍵)。 |
點擊次數 | [可選參數] 要點擊鼠標按鈕的次數。默認值為 1. |
返回值
成功: | 返回值為1。 |
失敗: | 返回值為0。 |
注意
在執行此命令前可能還需要使用 ControlFocus 命令把焦點轉到目標控件上。
模擬點擊控件僅在目標控件的父窗口處於激活狀態(一般程序會自動激活該窗口)時才能保證100% 的准確性。
相關
ControlCommand, ControlFocus, MouseClick
持續更新中。。。。。。