AutoHotkey 是一款免費的、Windows平臺下開放源代碼的訪問鍵腳本語言。也可以通過命令調用系統接口及程序,并創建基于簡單語言的圖形化界面的執行程序。
功能
通過發送鍵盤或鼠標的鍵擊動作命令來實現幾乎所有操作的自動化。您可以自己編寫 宏(AutoHotkey Script)或者使用宏錄制器(AutoScriptWriter)來生成;
為鍵盤,游戲操縱桿和鼠標創建 熱鍵。事實上任何的按鍵、按鈕或組合鍵都可以被設置為熱鍵;
可以對Windows各類型窗口進行匹配以及相關屬性調整(例如:透明、隱藏、置頂、改變大小等);
當鍵入您自定義的縮寫時可以 擴展縮寫。例如,鍵入“btw”就可以自動擴展為“by the way”;
創建自定義的數據輸入表格、用戶界面、菜單等標準控件以及ActiveX 組件(例如IE瀏覽器控件)等。詳情請看 圖形界面 部分;
運行現有的AutoIt v2腳本并用 新功能 來增強它們;
將腳本文件編譯 成EXE可執行文件,使得程序在沒有安裝AutoHotkey的機器上得以運行;
借助 相關工具 以實現更強大的功能;
更多關于訪問鍵的說明
AutoHotkey 可令鍵盤、游戲操縱桿和鼠標的所有潛能都發揮出來。例如,除了典型的ctrl、Alt和Shift鍵之外,你還可以定義Win鍵(logo鍵)和Capslock鍵作為調節鍵。而實際上你還可以設置任意的鍵盤按鍵或鼠標按鍵作為調節鍵。詳細內容請看 高級熱鍵 部分。
其他功能
基本用法:
關閉或屏蔽Windows自有的快捷鍵,例如Win+E和Win+R;
取替Alt-Tab(通過按鍵、鼠標滾輪或按鈕)從而減輕RSI(肢體重復性勞損);
本機代碼互操作:
可以調用COM和DLL對象進行功能擴展;
可以創建SN碼地址,當它被調用時會重定向到腳本中的函數;
可以復制字符串到內存地址或來自內存地址,并可以對其在指定代碼頁間進行轉換;
文件、目錄和磁盤管理:
讀取、寫入、復制、刪除、獲取設置屬性以及解釋文本文件比起其他語言更容易;
提供面向對象的文件I/O操作;
支持驅動器彈出以及獲取驅動器列表、容量、剩余空間、文件系統、卷標、序列號、類型、狀態等;
可對IN文件(配置信息文件)進行讀寫操作。
流程控制:
多種條件判斷(字符項目、窗口、文件、進程、錯誤返回值等),條件下采用{}區塊以及制表符進行分層級;
可以配合變量進行多級循環復雜操作;
可以與一般編程一樣創建自定義函數并調用;
圖形界面:
使用您喜歡的圖標、工具提示(ToolTip)、菜單項目和子菜單來自定義托盤圖標菜單;
顯示對話框、工具提示(Tooltips)、氣球提示以及彈出菜單,與用戶交互;
可以置頂自定義圖片來做程序啟動界面;
鼠標和鍵盤:
可以禁用或啟用用戶通過鍵盤和鼠標對電腦進行操作而腳本不受影響。
用游戲操縱桿或鍵盤代替鼠標;
可以對窗口中的指定控件進行點擊、改變文字等操作而不會出現鼠標點擊事件;
數學相關:
可以進行一些科學運算(如三角函數、平方根、冪運算、e^N等);
屏幕管理:
通過檢測圖像和象素色彩來自動執行游戲中的動作;
進程管理:
執行腳本動作來響應系統關閉或注銷;
使用RunAs方式指定運行用戶身份;
可以對進程進行是否存在、列表、優先級、等待運行、等待結束操作;
注冊表:
可以循環讀取注冊表并操作;
可對注冊表進行讀寫、刪除操作。
聲音命令:
調節音量、設置靜音,以及其他關于聲卡的設置;
可以播放wav音頻;
字符串管理:
可以定義字符串變量對字符串變量進行截取、替換、正則表達式匹配、大小寫改變等處理;
可以生成隨機數,用戶可以根據隨機數生成自定義隨機字符;
獲取并改變剪貼板的內容,包括從File Explorer中復制的文件的名稱;
針對一組與通配符匹配的文件進行操作;
窗口管理:
可以檢測窗口是否處于各種狀態(激活、最大化、存在、隱藏等);
可以獲取窗口的標題、ahk_class、文字等相關信息方便鼠標等操作;
可以對窗口進行最大化、激活、隱藏、關閉、強制關閉、等待等相關操作;
其他:
可以獲取系統環境(如幕分辨率、多顯示器信息、系統對象的尺寸和其他系統屬性)相關信息并執行預定操作;
監控您的系統。例如,當您不希望見到的窗口出現時自動關閉它們;
可以設置定時器并啟用、停用該項目;
檢測系統空閑時間。例如,在系統空閑的時候執行高CPU負荷的任務;
你只要有想像力,它可以完成更多工作。
兼容性
在 Windows 95/98/Me 下,一些 高級功能例如鼠標訪問鍵和 熱字串 -- 在Win9x 平臺將失效。
在Window8/8.1環境下,BlockInput會失效。
在Windows RT操作系統上,需要越獄并下載指定編譯版本Autohotkey,手動注冊相關注冊表項后
即可使用,不保證所用命令有效。
注意事項
1、在字符串賦值時,使用a=b這種方式時,“"”(英文雙引號)、“,”(英文逗號)需要轉義,轉義符為“·”(Tab上面,1左邊的字符),等同于其他語言的“\”。其他要轉義的字符:回車“`r”,換行“`n”,制表符“`t”,空格“%A_Space%”,非注釋分號“`;”,非引用百分號“`%”。
2、AHKer在接觸AHK可能接觸過其他語言,會有書寫方面的問題。建議按照標準書寫風格書寫并嚴格使用制表符以及區塊進行分層。語句各屬性項目嚴格使用英文逗號分隔而不是空格,這會大大減少錯誤情況。
3、使用AutoScriptWriter錄制的腳本可能會用語句冗余以及操作時間不當等操作,可以作參考并適當添加win相關命令以及PixelGetColor、ImageSearch等命令在恰當的時機操作。
4、窗口以及像素相關操作(如鼠標點擊)默認為相對當前活動窗口,一些操作可能會錯誤。需要默認為全屏幕,請在腳本頭添加:
CoordMode,Pixel,Screen
CoordMode,Mouse,screen
5、腳本運行時,默認會有任務欄圖標及相關右鍵菜單,如不需右鍵菜單,請在腳本頭添加Menu, Tray, NoStandard;如不需要顯示任務欄圖標,請在腳本頭添加#NoTrayIcon。
翻譯進度
原英文幫助CHM文件被解壓后,除去19個腳本頁面,共計254個HTML網頁文件。
待翻統計:
命令:220個共1.22M,剩79個共717K
雜項:18個共172K,剩14個共156K
根目錄下:16個共366K,剩7個共221K
html 文件總計:254個頁面共1.75M
未翻:100個頁面共1.07M,約61.14%
已翻:154個頁面共0.68M,約38.86%
主分支的版本幫助已完全翻譯完畢,翻譯詳情及下載請至AutoHotkey中文論壇
*AutoHotKey已推出中文版幫助,AHK版本v1.1.13.00。該中文幫助由 amnesiac 更新。
計劃
(1)將官方論壇中Tuncay大大收集的Ahk Standard Library Collection(當前版本:201009181732)集成到幫助文件,已放出第一個測試版,歡迎下載及提供意見和建議!
(2)由于1.0.48.05版本主分支已經停止更新近一年,而AutoHotkey_L分支持續更新,增加了許多重要的特性,因此接下來計劃翻譯其幫助文件。
新特性
錯誤處理
許多命令支持使用 try/catch 代替 ErrorLevel 進行錯誤處理。例如:
try
{
FileCopy, file1.txt, C:\folder
FileDelete, C:\folder\old.txt
}
catch
MsgBox An error occured!
此外, 后面的這些命令設置 A_LastError 來輔助調試: FileAppend, FileRead, FileReadLine, FileDelete, FileCopy, FileMove, FileGetAttrib/時間/開本/Version, FileSetAttrib/Time, FileCreateDir, RegRead, RegWrite, RegDelete.
函數庫
除了 %A_MyDocuments%\AutoHotkey\Lib 的用戶庫和在 AutoHotkey 目錄的標準庫外, 函數還可以從 %A_ScriptDir%\Lib 中的 "本地庫" 自動加載。想了解更多信息, 請參閱 函數庫。
#Include
GUI 增強
對 Gui 命令和相關部分進行了一些增強:
引用 GUI 時可以用 名稱或 HWND 代替介于 1 和 99 之間的數字。
Gui, New 創建新的匿名 GUI。
可以創建任意數目的命名或匿名 GUI。
新 GUI 選項: +HwndOutputVar, +ParentGUI
GUI 的擁有者可以為任意窗口: +Owner%HWND%。
Gui, Font 可以控制文本的反鋸齒效果。
支持像 Internet Explorer WebBrowser 這樣的 ActiveX 控件。
GuiControlGet, OutputVar, 人名 獲取與 GUI 控件關聯的變量名。
在 Gui menus 中使用像 ctrl+O 這樣的鍵盤快捷鍵時會自動得到支持。
字體品質 可以通過 Font 子命令控制。
靜態變量
靜態變量可以使用任意表達式進行初始化。例如:
睡覺 500
MsgBox % 時間() "ms since the script started."
Time() {
static Tick := A_TickCount
return A_TickCount - Tick
}
文本編碼
FileRead, FileReadLine, Loop Read 和 FileAppend 支持 Windows 所支持的大部分文本編碼, 而不限于系統默認的 ANSI 代碼頁. 可以用 FileEncoding 設置默認編碼, 此設置在 FileRead 和 FileAppend 中可以使用如下方法覆蓋:
FileRead, OutputVar, *Pnnn Filename
FileAppend [, 文本, Filename, Encoding]
此處 nnn 必須是數值的 代碼頁標識符, 而 Encoding 遵循與 FileEncoding 相同的格式。
另請參閱: 腳本兼容性
可變參數函數和函數調用
可變參數函數 可以通過數組接受可變數目的參數, 而 可變參數的函數調用 可以用來傳遞可變數目的參數給函數。
圖標支持的改進
不常見的大小
可以從可執行文件中提取操作系統支持的任意大小的圖標資源。當圖標組中存在多種大小的圖標資源時,則使用其中最合適的大小。在修訂號 17 之前的版本中,系統先選擇任意的圖標資源,接著調整到系統的大圖標尺寸,然后調整回請求的尺寸。
資源標識符
使用負數的圖標編號可以標識可執行文件中的一組圖標資源。例如,下面的語句設置托盤圖標為 ahk 文件的默認圖標。
Menu, Tray, Icon, %A_AhkPath%, -160
參考資料 >