autohotkey

為遊戲操縱桿和滑鼠創建的熱鍵

autohotkey是一款免費的、Windows平台下開放源代碼的熱鍵腳本語言,是為遊戲操縱桿和滑鼠創建的熱鍵,是自動按鍵。也可以通過命令調用系統介面及程序,並創建基於簡單語言的圖形化界面的執行程序。

功能


送鍵盤滑鼠鍵擊令乎操化。您編 宏( )宏錄製器();
鍵盤,遊戲操縱桿滑鼠創建 熱鍵。按鍵、按鈕組合鍵設置熱鍵;
各類型窗匹配及屬調整(例:透、隱藏、置頂、改);
當鍵入您自定義的縮寫時可以 擴展縮寫。例如,鍵入“btw”就可以自動擴展為“by the way”;
創建自定義的數據輸入表格、用戶界面、菜單等標準控制項以及ActiveX 組件(例如IE瀏覽器控制項)等。詳情請看 圖形界面 部分;
映射 鍵盤、遊戲操縱桿和滑鼠上的按鍵或按鈕;
運行現有的AutoIt v2腳本並用 新功能 來增強它們;
將腳本文件編譯 成EXE可執行文件,使得程序在沒有安裝AutoHotkey的機器上得以運行;
藉助 相關工具 以實現更強大的功能;
更多關於熱鍵的說明
AutoHotkey 可令鍵盤、遊戲操縱桿和滑鼠的所有潛能都發揮出來。例如,除了典型的Control、Alt和Shift鍵之外,你還可以定義Win鍵(徽標鍵)和Capslock鍵作為調節鍵。而實際上你還可以設置任意的鍵盤按鍵或滑鼠按鍵作為調節鍵。詳細內容請看 高級熱鍵 部分。
其他功能
基本用法:
關閉或屏蔽Windows自有的快捷鍵,例如Win+E和Win+R;
取替Alt-Tab(通過按鍵、滑鼠滾輪或按鈕)從而減輕RSI(肢體重複性勞損);
本機代碼互操作:
可以調用COM和DLL對象進行功能擴展;
可以創建機器碼地址,當它被調用時會重定向到腳本中的函數;
可以複製字元串到內存地址或來自內存地址,並可以對其在指定代碼頁間進行轉換;
文件、目錄和磁碟管理:
讀取、寫入、複製、刪除、獲取設置屬性以及解釋文本文件比起其他語言更容易;
提供面向對象的文件I/O操作;
支持驅動器彈出以及獲取驅動器列表、容量、剩餘空間、文件系統、卷標、序列號、類型、狀態等;
可對IN文件(配置信息文件)進行讀寫操作。
流程式控制制:
多種條件判斷(字元項目、窗口、文件、進程、錯誤返回值等),條件下採用{}區塊以及製表符進行分層級;
可以配合變數進行多級循環複雜操作;
可以與一般編程一樣創建自定義函數並調用;
圖形界面:
使用您喜歡的圖標、工具提示(ToolTip)、菜單項目和子菜單來自定義托盤圖標菜單;
顯示對話框、工具提示(Tooltips)、氣球提示以及彈出菜單,與用戶交互;
可以置頂自定義圖片來做程序啟動界面;
滑鼠和鍵盤:
可以禁用或啟用用戶通過鍵盤和滑鼠對電腦進行操作而腳本不受影響。
用遊戲操縱桿或鍵盤代替滑鼠;
可以對窗口中的指定控制項進行點擊、改變文字等操作而不會出現滑鼠點擊事件;
數學相關:
可以進行一些科學運算(如三角函數、平方根、冪運算、e^N等);
屏幕管理:
通過檢測圖像和象素色彩來自動執行遊戲中的動作;
執行腳本動作來響應系統關閉或註銷;
使用RunAs方式指定運行用戶身份;
可以對進程進行是否存在、列表、優先順序、等待運行、等待結束操作;
註冊表:
可以循環讀取註冊表並操作;
可對註冊表進行讀寫、刪除操作。
聲音命令:
調節音量、設置靜音,以及其他關於音效卡的設置;
可以播放wav音頻;
字元串管理:
可以定義字元串變數對字元串變數進行截取、替換、正則表達式匹配、大小寫改變等處理;
可以生成隨機數,用戶可以根據隨機數生成自定義隨機字元;
獲取並改變剪貼板的內容,包括從資源管理器中複製的文件的名稱;
針對一組與通配符匹配的文件進行操作;
窗口管理:
可以檢測窗口是否處於各種狀態(激活、最大化、存在、隱藏等);
可以獲取窗口的標題、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分支持續更新,增加了許多重要的特性,因此接下來計劃翻譯其幫助文件。

新特性


流程式控制制
BreakLoopLabel退出一個循環或任意數目的嵌套循環。
ContinueLoopLabel繼續循環,即使在任意數目的嵌套循環中。
Forx,yinz從頭到為尾循環對象的內容。
Loop Until循環直到條件為真。可用於任意類型的循環。
Try...Catch提供結構化的異常處理機制。
Throw拋出異常。
命令
FileEncoding
FileRead、FileReadLine、Loop Read、FileAppend和FileOpen設置默認編碼。
另請參閱:文本編碼
Gui請參閱後面的GUI 增強。
IniRead/Write/Delete讀取,寫入或刪除整段,或獲取所有段名稱組成的列表。
Menu, Icon設置或移除菜單項圖標。
Run改進了參數的解析方式。
SendInput {U+nnnn}發送 Unicode 字元。在 Unicode 版本中可以直接使用 Unicode 字元。
SendLevel控制熱鍵和熱字串是否忽略模擬的鍵盤和滑鼠事件。
SetFormat, IntegerFast, h|H設置小寫或大寫的十六進位格式。
SetRegView, RegView允許 32 位腳本中的註冊表命令訪問 64 位註冊表視圖,反之亦然。
Transform, HTML執行代碼頁或 HTML 轉換。
WinGet, ..., ProcessPath獲取擁有指定窗口的進程的完整路徑和名稱。
指令
#Ifexpression類似於#IfWinActive,但可以是任意類型的表達式。
#IfTimeout設置計算單個 #If 表達式可以使用的最大時間。
#MenuMaskKey改變用來屏蔽 Win 或 Alt keyup 事件的按鍵。
#Include 包含函數庫文件夾中的腳本文件。
#InputLevel控制熱鍵和熱字串是否忽略模擬的鍵盤和滑鼠事件。
#Warn啟用或禁用為選擇的情況提示開發者錯誤的警告。
函數
ComObj...--
ComObjActive
ComObjEnwrap/Unwrap
ComObjParameter
ComObjType
獲取註冊的 COM 對象。
包裝/解開 COM 對象。
把值和類型包裝成參數傳遞。
獲取 COM 對象的類型信息。
ComObjArray創建用於 COM 的 SAFEARRAY。
ComObjConnect連接 COM 對象的事件源到帶有給定前綴的函數。
ComObjCreate創建 COM 對象。
ComObjError啟用或禁用 COM 錯誤通告。
ComObjFlags獲取或改變控制 COM 包裝器對象行為的標誌。
ComObjGet返回由 COM 組件提供的對象引用。
ComObjQuery查詢 COM 對象的介面或服務。
ComObjType從 COM 對象獲取類型信息。
ComObjValue獲取存儲在 COM 包裝器對象中的值或指針。
Exception創建用於Throw的異常對象 (同時提供對堆棧的受限訪問)。
FileOpen提供面向對象的文件 I/O。
Func獲取函數的引用。
GetKeyName/VK/SC獲取按鍵的名稱、文本、虛擬按鍵碼或掃描碼。
InStr搜索字元串的出現位置,從左邊或右邊開始。
IsByRef判斷變數是否是 ByRef 參數。
IsObject判斷某個值是否為對象。
StrPut / StrGet複製字元串到內存地址或來自內存地址,並可選地對其在不同代碼頁間進行轉換。
Trim移除字元串的開始和/或末尾的某些字元。
RegEx (?CNum:Func)在正則表達式進行模式匹配期間調用函數。
函數庫新的 "本地庫" 和#Include
可變參數函數函數可以通過數組接受可變數目的參數。
靜態初始化靜態變數現在可以使用任意表達式進行初始化。
對象
概述對象的常規行為和用法。
對象可以使用其他功能擴展的關聯數組。
枚舉數可以枚舉容器中的項目。
文件提供訪問文件的介面。FileOpen返迴文件類型的對象。
Func表示可以被腳本調用的自定義或內置的函數。
ComObject請參閱上面的 ComObj 函數。
變數
A_Is64bitOS當操作系統為 64 位則值為 1(真),為 32 位則為 0(假)。
A_IsUnicode在 Unicode 版本中,此變數值為 1 (true)。 在 ANSI 版本中此變數未定義, 所以等同為false。
A_FileEncoding包含用於多種命令的默認編碼,請參閱FileEncoding。
A_OSVersion支持 Windows 7 和 Windows 8,請參閱A_OSVersion。
A_PriorKey在最近按鍵按下或釋放前最後按下的按鍵名稱 ...(更多細節)
A_PtrSize包含指針的大小,單位為位元組。此大小為 4 (32 位) 或 8 (64 位)。
A_RegView由SetRegView設置的當前註冊表視圖。
A_ScriptHwnd腳本隱藏主窗口的唯一 ID (HWND/句柄)。
數據類型
Ptr在 32 位版本中等同於Int而在 64 位版本中為Int64。 由DllCall,NumPut和NumGet所支持。
AStr,WStr僅DllCall支持,請參閱腳本兼容性。
Unicode
兼容性在 DllCall 中如何處理 Unicode 等。
腳本文件在腳本文件中使用 Unicode 編碼。
SendInputSendInput 中使用 Unicode。
其他
ahk_exe窗口可以通過擁有此窗口的進程名稱或路徑 (EXE 文件) 進行標識。
調試互動式調試功能 (單步執行等)。
錯誤處理Try/catch/throw 和增加的 A_LastError 可用性。
GUI 增強Gui 命令和相關部分的多方面增強。
圖標支持資源標識符和改進的對各種圖標大小的支持。
其他變更影響腳本兼容性的改變。
版本歷史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/Time/Size/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, Name 獲取與 GUI 控制項關聯的變數名。
在 Gui menus 中使用像 Ctrl+O 這樣的鍵盤快捷鍵時會自動得到支持。
字體品質 可以通過 Font 子命令控制。
靜態變數
靜態變數可以使用任意表達式進行初始化。例如:
Sleep 500
MsgBox % Time() "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 [, Text, Filename, Encoding]
此處 nnn 必須是數值的 代碼頁標識符, 而 Encoding 遵循與 FileEncoding 相同的格式。
另請參閱: 腳本兼容性
可變參數函數和函數調用
可變參數函數 可以通過數組接受可變數目的參數, 而 可變參數的函數調用 可以用來傳遞可變數目的參數給函數。
圖標支持的改進
不常見的大小
可以從可執行文件中提取操作系統支持的任意大小的圖標資源。當圖標組中存在多種大小的圖標資源時,則使用其中最合適的大小。在修訂號 17 之前的版本中,系統先選擇任意的圖標資源,接著調整到系統的大圖標尺寸,然後調整回請求的尺寸。
資源標識符
使用負數的圖標編號可以標識可執行文件中的一組圖標資源。例如,下面的語句設置托盤圖標為 ahk 文件的默認圖標。
Menu, Tray, Icon, %A_AhkPath%, -160