先介紹AutoHotkey v2語言的基本組成:
- v1是命令式的語法,v2則是表達式的語言,基本上使用函數調用的方法運行;函數調用時可省略括號
- 關鍵字大小寫不區分。檔案編碼建議使用 UTF-8帶BOM
-
v1寫法:
; MsgBox, Text ; MsgBox [, Options, Title, Text, Timeout] MsgBox, 64, Message title, Hello!, ;; v1. 64=Information icon
- v2寫法:
; MsgBox [Text, Title, Options] ; Result := MsgBox([Text, Title, Options]) MsgBox "Hello!",,64 MsgBox("Hello!",,64)
- v2寫法:
[!COMMENT]+ 建議
盡量使用函數式的寫法
1. 註解
- 行內註解用分號,左邊至少一個空白(在行首則不用空白)
- 多行註解用單行
/*
與*/
夾住的區塊
2. 字串與變數
2.1. 字串
- 字串用雙引號或單引號夾住
- 字串裡有雙引號則外層使用單引號,字串裡有單引號則外層使用雙引號
- 也可使用跳脫字元(Escape sequence):倒引號 (`)
- 特殊字元
- `t: Tab字元
- `n: Linefeed字元 (new line)
- `r: Carriage return字元
- `f: Formfeed字元
- `{: 大括號字元
- 字串連接用空白或 . (半形的點)
sToday := A_YYYY . "年" . A_MM . "月" . A_DD "日"
MsgBox("今天是 " sToday "`n時間:" A_Hour "時" A_Min "分" A_Sec "秒")
sMsg := Format("今天是 {1}年{2}月{3}日`n時間:{4}時{5}分{6}秒", A_YYYY, A_MM, A_DD, A_Hour, A_Min, A_Sec)
MsgBox(sMsg)
- 上述程式碼中的
sToday
是變數,用來存放指派給它的特定資料 :=
是指派、賦值的運算子。x := y
運算式將變數 y
的值賦予給變數 x
- 拚接字串與變數可使用Format()
2.2. 多行字串
sFormat := "
(
今天是 {1}年{2}月{3}日
時間:{4}時{5}分{6}秒
)"
MsgBox "多行字串範例`n" . Format(sFormat, A_YYYY, A_MM, A_DD, A_Hour, A_Min, A_Sec)
2.3. 變數
- AutoHotkey的名稱(包含變數名稱、函數名稱等)不區分大小寫,最長253個字元
- 名稱可使用任意的文字、數字、底線(Underscore),且不能以數字開頭
- 變數沒有型別,因此一個變數的值可以是字串或數值,可以任意指派各種類型的值給變數
- 保留字不能用做名稱(例如 if、while等)
- 內建變數以
A_
開頭,如A_YYYY、A_MM、A_DD等
[!TIP]+ 匈牙利命名法 (Hungarian notation)
AutoHotkey的變數沒有型別,為方便區分變數存放的資料類型,建議使用匈牙利命名法來命名變數,以開頭的幾個小寫字母當做變數的型別例如:字串變數以
s
開頭,表示String,整數變數以i
開頭,表示Integer,...
3. 熱字串 (Hotstring)
- 熱字串用來輸入後擴展成指派內容的表示式
[!REF]+ 熱字串簡單格式
::熱字串::擴展後內容[觸發字元]
觸發字元預設是空白、Tab或 Enter
::ma::mymail@gmail.com
::,ma::mymail@gmail.com ; 逗點被保留了, why?
::,m1::mymail@gmail.com
::,ah::AutoHotkey
[!TIP]+ 技巧
- 熱字串以特殊符號開頭以確保不會與常用文字結合而錯誤擴展
- 例如熱字串為
ma
時,輸入- 選用方便輸入的特殊符號,例如
,
、;
或/
等
3.1. 選項
[!REF]+ 熱字串選項
:選項:熱字串::擴展後內容[觸發字元]
sFormat := "{1}年{2}月{3}日 {4}時{5}分{6}秒"
:X:,da::MsgBox Format(sFormat, A_YYYY, A_MM, A_DD, A_Hour, A_Min, A_Sec)
:X:,da2::Send Format(sFormat, A_YYYY, A_MM, A_DD, A_Hour, A_Min, A_Sec)
:O:,m2::mymail@gmail.com
- 選項
X
:執行擴展文字 - 選項
O
:Omit,省略輸出觸發字元
3.2. 練習
- 建立一個新的腳本檔 ahk63.ahk2
- 添加熱字串
,addr
輸出家裡或公司地址 - 添加熱字串
,dd
輸出今天的簡短日期(有分隔線),,tt
輸出當前的簡短時間(有分隔線) - 添加熱字串
,d
輸出今天的簡短日期(無分隔線),,t
輸出當前的簡短時間(無分隔字元)
- 添加熱字串
4. 相關鏈接
VS Code下載:https://code.visualstudio.com/download
AutoHotkey下載:https://www.autohotkey.com/download/
VSCode擴充 Action Buttons Ext: https://marketplace.visualstudio.com/items?itemName=jkearins.action-buttons-ext
Easy-Auto-GUI-for-AHK-v2: https://github.com/samfisherirl/Easy-Auto-GUI-for-AHK-v2
如果你覺得我的VS Code樣式有點吸睛的話,請參考我的影片:Peacock:五彩繽紛的vs-code擴充
5. 教學影片
##
您可能也會有興趣的類似文章
- [Tools] 常用的AutoHotKey設定 (9則留言, 2005/05/12)
- AHK61|Window的AutoHotkey .ahk與.ahk2檔案關聯-使用assoc與ftype命令 (0則留言, 2024/02/25)
- AHK59|使用VS Code開發AutoHotkey-編輯、執行與除錯 (0則留言, 2024/02/11)
- [AHK#51] 偵測並啟動Windows服務 (0則留言, 2022/06/05)
- 幾個AutoHotkey的實用範例:音量控制、滾輪回上層與語音功能(AHK #7) (3則留言, 2019/06/05)
- 輕鬆學會彈指神功-揭露AutoHotkey絕技 (63則留言, 2008/04/10)
- AHK60|AutoHotkey++擴充設定詳解與Code Snippets設置;使用VS Code (0則留言, 2024/02/24)
- [Obs#16] 使用區塊代碼以快速跳轉位置的方法 (0則留言, 2020/10/29)
- [AHK#57] AutoHotkey v2正式釋出,2023年學習新目標 (6則留言, 2023/01/01)
- AHK62|VS Code開發AutoHotkey操作技巧#2 (0則留言, 2024/03/06)
- [AHK#58] 擷取豆瓣電影網的超簡單AutoHotkey爬蟲腳本程式 (0則留言, 2023/03/04)
- 輕鬆學會AutoHotkey的熱鍵:熱鍵用法實例解說(AHK #4) (2則留言, 2019/05/24)
- AutoHotkey輸出中文的方法 (19則留言, 2008/03/01)
- 使用AutoHotkey彈出對話窗,依回應執行不同動作 (0則留言, 2019/12/11)
- 用AutoHotkey輕鬆製作螢幕小鍵盤 (16則留言, 2008/03/16)