一直久聞 AutoHotKey 的強大,但沒有真的下去玩玩看,最近遇到一些情境滿適合的,就稍微來研究看看這套使用 C++ 撰寫的自由軟體,看看他能否解決我所遇到的狀況。
簡介
AutoHotKey 可以讓我們自訂各種快速鍵或巨集程式,來控制鍵盤和滑鼠的動作,藉由寫一隻副檔名為 .ahk 的指令檔,建立各種快速鍵,加速我們的操作。
有了 .ahk 指令檔,你可以直接執行該檔案來啟動 AutoHotKey,或者可以使用安裝目錄中 Compiler 資料夾下的 Ahk2Exe.exe,將指令檔封裝成一個可執行的 .exe 檔,讓你可以拿到沒有安裝 AutoHotKey 的電腦上執行。
常用的兩種基本模式:
- Hot String
- Hot Key
下面來看看幾個簡單範例。
Hot String
Hot String 是輸入一組特定的文字,然後自動帶出完整文字,像是寫程式時常用的 Code Snippet 一樣。
1 | ; Hot String 範例 |
| 關鍵字 | 觸發符號 | 說明 |
|---|---|---|
:O:YOUR_HOT_STRING:: |
空白 | :O: 表示必須按觸發符號以替換文字,但不輸出觸發符號;O 代表 Omit(忽略)的意思 |
:*:YOUR_HOT_STRING:: |
無 | :*: 表示不需要觸發符號,完成輸入後立刻替換內容 |
:B0:YOUR_HOT_STRING:: |
空白 | :B0: 可取消 AutoHotkey 預設觸發後自動刪除關鍵字的功能 |
:*B0:YOUR_HOT_STRING:: |
無 | 再多加一個星號就能不使用觸發符號,且不會多出一個空白 |
預設觸發符號可以是
空白鍵、Tab或Enter。
Hot Key
Hot Key 就是我們常聽到的快捷鍵,設定方式也很簡單,只是要先知道怎麼使用對應的特殊鍵,像是下面這個例子就是設定 Ctrl + K 這組快速鍵,當偵測到這組快速鍵的時候,就會執行 Send 這個命令,輸入 Hello{Tab}World{Enter} 替代。
1 | ^k::Send Hello{Tab}World{Enter}{#}1 |
| 特殊鍵 | |
|---|---|
^ |
Ctrl 鍵 |
! |
Alt 鍵 |
+ |
Shift 鍵 |
# |
Win 鍵 |
& |
用 & 可組合兩個按鍵,例如:LButton & a 表示按左鈕不放,同時再按 a 鍵 |
| 按鍵 | |
|---|---|
{Enter} |
Enter鍵 |
{Escape} 或 {Esc} |
Escape鍵 |
{Tab} |
Tab鍵 |
{Backspace} 或 {BS} |
倒退鍵 |
{Delete} |
刪除鍵 |
{Insert} |
插入鍵 |
{Up}、{Down}、{Left}、{Right} |
方向鍵 |
{PgUp}、{PgDn} |
換頁鍵 |
{CapsLock} |
大寫鍵 |
{NumLock} |
數字鎖定鍵 |
{Ctrl}、{LCtrl}、{RCtrl} |
控制鍵與左、右控制鍵 |
{Alt}、{LAlt}、{RAlt} |
Alt鍵與左、右Alt鍵 |
{LButton}、{MButton}、{RButton} |
滑鼠左、中、右鈕 |
{WheelDown}、{WheelUp} |
滑鼠滾輪向下與向上 |
在指定程式下運作
這裡就是我想要的重頭戲,主要有兩個功能:
- 變數
- 指定程式
下面範例建立了兩個變數,並用 := 來設定該變數的值,並使用 #IfWinActive 這個標示出下面區塊的設定只會在 Notepad 這支程式下才生效。
#IfWinActive 會去檢查當前的視窗是否是你想要執行的目標視窗,那他是怎麼檢查的呢?他會根據你所設定的 WinTitle 去檢查是否符合你設定的目標,常用 ahk_class(視窗類別,用此檢查視窗名稱)和 ahk_exe(程序名稱或路徑)來指定,參考列表如下:
| 參數 | 行為 |
|---|---|
| A | 當前視窗 |
| ahk_class | 視窗類別 |
| ahk_id | 唯一的 ID/HWND |
| ahk_pid | 程序 ID |
| ahk_exe | 程序名稱/路徑 |
| ahk_group | 視窗群組 |
這樣我們就可以寫出像下面這樣的指令碼:
1 | account:="MY_ACCOUNT" |
簡單說明一下,上面的指令碼建立了兩個變數,帳號和密碼,然後在特定的程式下(Notepad)可以使用 Ctrl + L 快速輸入 %account%{Tab}%password%{Tab}{Enter} 這個動作,也就是輸入帳號 > 按 Tab 換到下個欄位 > 輸入密碼 > 按 Tab 換到下個按鈕 > 按 Enter 送出。
其他
自動啟動
要設定開機自動啟動指定的 .ahk 的指令檔,只需要在下面這個資料夾中,將你的指令檔複製進去,或是在裡面建立指定檔的捷徑,這樣開機時就會自動啟動了。
C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
上述路徑記得將 username 改成你自己的帳戶名稱。
如果想要將指令檔放在其他地方管理,也可以建立一個捷徑,然後將捷徑放到上述資料夾中,這樣也可以達到開機自動啟動的效果。
測試
編輯指令檔後必須重新啟動或載入才有辦法測試,這邊我通常會從系統列中的 AutoHotKey 的圖示上按右鍵,執行 Reload This Scrip 來重新載入指令檔。

參考資料: