對于絕大多數用戶這個問題的答案都應該是 AutoHotkey_L,那么這個問題還是問題嗎?對于新人我還是有必要簡要介紹它們(這是他們的主要困惑之一),以便對這些名稱及它們的含義有個清晰的認識,同時明白自己選擇的原因(順便也了解些典故)。

圖 AutoHotkey 的歷史和當前分支一覽(來源)
AutoHotkey_L(首選)
AutoHotkey_L 指主要由 Lexikos 在原 AutoHotkey Basic(見下文)源碼基礎上開發的分支,具體包括從1.0.48.05 L4 版本號 (更新記錄為 Revision 4,發布于 2008-07-18)至今的所有版本,更新記錄請參閱 AutoHotkey_L 更新記錄。有時會被籠統的稱為“AutoHotkey 1.1“(目前在下載頁面即是如此)。
功能的增強
它在 AutoHotkey Basic 基礎上增加或增強的主要功能(詳細說明請參閱 AutoHotkey_L 新特性):
- 提供 Unicode、COM 和 64 位原生支持
- 支持各種文本編碼
- 對象(可擴展的聯合數組)
- 交互式調試支持
- 增強的錯誤處理
- 面向對象文件 I/O
功能的增強是我們選擇的重要原因之一,在如今的 Windows 主流系統中不支持 Unicode 的腳本用處還有多大呢?尤其對于中文用戶。
主流的支持
功能的增強是其中一個方面,主流的支持則是另一個重要原因。與其他比較,AutoHotkey_L 是目前 AutoHotkey 社區用戶使用的主流分支:
- 目前尚在更新,包括修復缺陷和完善功能
- 社區中的函數和腳本幾乎都適用該分支
- 遇到問題時能方便從社區或網絡獲得支持
所以,如果您在猶豫,那么選擇 AutoHotkey_L 吧。
構建的選擇
該分支中因編碼和平臺類型分成三種構建(build):
Unicode 32-bit - recommended for new scripts.
Unicode 64-bit - for increased performance on 64-bit systems.
ANSI 32-bit - better compatibility with some older scripts.
如下載頁面的說明所示,大多數用戶請選擇 Unicode 32-bit,但這個鏈接的目標文件僅有主程序(即一個 AutoHotkey.exe,適合偏愛綠色版的老用戶)。建議直接下載頁面開始處的安裝包(Installer),其中包含了這三種構建和后面的編譯器和離線幫助(英文的,中文幫助請在底部鏈接處下載)并在安裝時選擇 Unicode 32-bit 即可。
Unicode 64-bit 僅能運行于 64 位系統,至于比較此時的 32 位構建其性能有增強多少還沒看到有比較數據。
ANSI 32-bit 的兼容性主要指運行為 AutoHotkey Basic 編寫的腳本而言,新用戶無需考慮。
注:若未特別說明,以后本專欄中的代碼的測試版本均為 AutoHotkey_L Unicode 32-bit。一般而言,AutoHotkey_L 及其他基于 AutoHotkey_L 分支的版本(如 AutoHotkey_H)應該能正常運行這些代碼。
AutoHotkey v2(不推薦)
AutoHotkey v2 由 Lexikos 根據 Chris Mallett(AutoHotkey Basic 作者)對 AutoHotkey 未來的計劃基于 AutoHotkey_L 代碼開發,目前仍在測試過程中,AutoHotkey v2 只有 Unicode 構建(含 32 和 64 位)。目前在開發過程中的許多新特性都會合并到 AutoHotkey_L 中。
開發狀態:它正在調整語法(帶來不兼容的許多變化)和功能,包含了許多細節改進。由于許多細節仍在調整中、功能和語法尚未定型,文檔也嚴重過時,且使用這個版本后您可能需要在每個新版發布時修改自己的代碼,同時也無法直接執行論壇上大量的腳本。
對于普通用戶及常規用途:目前該分支語法和功能尚未定型,較 v1.1 的更新情況也未全部寫入日志,且相應的文檔過時,所以不推薦日常使用。
對于其他用戶:該分支將很可能是 AutoHotkey 第三代(盡管版本為 v2),雖然目前含有一些缺陷,不過已經可以使用,所以歡迎有經驗的老用戶和開發者下載測試。關于這個分支的語法、功能等的討論正在官網熱烈進行,如果希望了解目前狀態或反饋相關的建議、意見(作者也活躍其中):
- v1.1 至 v2.0 變更記錄【英文、中文(內容較舊,robertlzj 翻譯)】
- 【AutoHotkey v2 討論版塊】
使用 AutoHotkey(Basic 至 _L)那么長時間以來,您不是一直在抱怨這個吐嘈那個嗎,還等什么呢?與作者直接交流吧,也許正式版出來時其中某個功能就是您的提議呢。
AutoHotkey_H(不推薦)
AutoHotkey_H 是由 HotkeyIt 合并了原有 AutoHotkey.dll(介紹見下文)并在AutoHotkey_L(及 AutoHotkey v2)基礎上開發的增強分支。它沒有使用自己的版本號,一般與 AutoHotkey_L(及 AutoHotkey v2)并行開發,最近更新時間為 2013-08-11。
一般提到 AutoHotkey_H 時,實際上包含了 AutoHotkey.dll 和 AutoHotkey.exe (H 版本) 及相關文件。其中:
- AutoHotkey.dll 最初由 tinku99 開發,已由 HotkeyIt 合并至 AutoHotkey_H,之后新增了簡化版本(AutoHotkeyMini.dll)。其他語言通過 DLL 接口或 COM 接口利用該文件可執行 AutoHotkey 代碼,而 AutoHotkey_L 也可通過它實現多線程。
- AutoHotkey.exe(H 分支)是 HotkeyIt 在 AutoHotkey_L(及 AutoHotkey v2)基礎上主要增加線程和結構相關函數并增強了 DLL 調用功能的分支,詳細的新增功能及細節變化請參閱其幫助。
- AutoHotkey v1(基于 AutoHotkey_L)可執行文件包含了 ANSI 和 Unicode 32 位版本及 Unicode 64 位版本。
- AutoHotkey V2(基于 AutoHotkey v2)可執行文件包含了 Unicode 32 和 64 位版本。
它實現了多線程、支持動態運行 AutoHotkey 代碼、在 #Includes 中使用通配符或動態 #Includes、簡化了 DLL 尤其是 Windows API 的調用,適用于已經使用 AutoHotkey 較長時間的有經驗用 戶。其中的幫助僅說明了在 AutoHotkey_L 外有修改或增強部分的內容,所以需要與 AutoHotkey_L 幫助一起使用。 AutoHotkey_H 功能上有所增強,不過用戶群較?。赡軠y試不充分)、不易獲得支持,同時幫助文件比較粗糙(盡管有譯成中文的版本),更新較不穩定。因此,新用戶無需考慮。
這個分支的水很深,不過如果您有一定編程經驗,我覺得可以試試。
不活躍分支
- IronAHK【 論壇主題頁、開發項目@ GitHub】
用于 Windows/Linux/Macintosh 的 .NET/Mono 分支。
這個分支由 polyethene 和其他貢獻者使用 C# 為 .NET 和 Mono 而完全重寫以實現 AutoHotkey 的跨平臺的分支。使用它您能把腳本編譯為平常的 .NET 編譯語言,因此需要 .NET 框架或 Mono 才能安裝。IronAHK 目前尚處于 Alpha 測試階段,并且不幸的是,目前開發似乎暫停較長時間了。還有許多事情需要做。
盡管這是個很有前景的項目,不過當前不建議初學者安裝使用。
- AutoHotkey Mobile【論壇主題頁】
用于 Pocket PC、WinCE 和 Smartphone 的 AutoHotkey 分支。
- AHKLinux【論壇主題頁】
用于 Linux/Wine 的版本。
其他歷史分支
對于出現過的其他歷史版本,下面盡可能用一句話簡單介紹以供了解,不建議使用。
- AutoHotkey Basic(經典版)
AutoHotkey Basic 包括從首個測試版本至 1.0.48.05(更新于 2009-09-25)的所有版本,更新記錄請參閱 AutoHotkey Basic 更新記錄。主要由 Chris Mallett 開發,在 2009 年更新到 1.0.48.05 版本后停止更新。作者在 2010 年宣布 AutoHotkey_L 為它的后續分支。
關于名稱:作者 Chris Mallett 稱之為“AutoHotkey Basic”,多數社區用戶也使用”Classic“,論壇上有些時候會表示為“Vanilla”(我感覺這個是代號),中文用戶多接受“經典版”(符合其內涵)。與 AutoHotkey_L 被稱為“AutoHotkey 1.1”相對應,有時該分支也籠統的使用“AutoHotkey 1.0”代稱。
注:由于這個分支作者已停止開發、論壇提問也不容易獲得支持,同時不包含 Unicode、64位系統及其他重要的特性,目前僅有少數老用戶及一些舊的腳本在使用。
- AutoHotkey.dll
AutoHotkey.dll 是 AutoHotkey 的動態鏈接庫版本,已合并至 AutoHotkey_H。
AutoHotkey.dll 它允許被 AutoHotkey_L(及基于該分支的版本)加載多次以實現多線程和使用它的導出函數和內置功能;同時可向其他編程和腳本語言嵌入了 AutoHotkey 解釋器而打開了 AutoHotkey 的世界。通過它可以在其他許多語言中使用 AutoHotkey 的功能,如 C#、C++、VB、Python、Javascript 等,只要它們能能加載 DLL 或使用 COM 接口。如果您可以在 Excel 或 Word 宏中執行 AutoHotkey 代碼,這是不是很酷?這是它的內置功能.
- AutoHotkeyU
AutoHotkeyU 是由 jackieku 開發的 AutoHotkey_L 的 Unicode 版本,已合并回 AutoHotkey_L(Revision 41)。
- AutoHotkey64
AutoHotkey64 是由 fincs 開發的 AutoHotkey_L 的 64 位版本(并增加 COM 支持),已合并回 AutoHotkey_L(Revision 53)。
小結
看到這里您是不是后悔了,長長的篇幅看下來,我就沒有選擇啊?哈哈,您也不會再為版本困惑了嘛。