主要用途
- 热键(hotkey):用来触发操作的按键或组合键,也就是快捷键。
- 命令:你为某个热键指定的一个动作(action),比如打开程序,打开网页等。
- 热字串(hotstring):类似于热键,当你输入热字串并按下回车或空格后触发相应的命令。
符号#
表示 Windows 键,#
后紧跟着 h 表示组合键。
符号::
用来分隔热键和命令(左边是热键,右边是命令)。
Run
命令用来打开一个文件或网页,中间空一个空格。
命令和函数
Command, 参数1, 参数2, 参数3
Function(参数1, 参数2, 参数3)
通过语法来分辨命令和函数. 命令后面的参数无需使用圆括号, 而函数需要使用.
跟函数不同的是, 命令使用 “传统语法”. 这意味着 需要 在变量的前后加上 %
, 比如 %Var%
. 而文本和数字则不需要加双引号
; 这些是命令
MsgBox, This is some text.
StringReplace, Output, Input, AutoHotKey, AutoHotkey, ALL
SendInput, This is awesome{!}{!}{!}
; 这些是函数
SubStr("I'm scripting, awesome!", 16)
FileExist(VariableContainingPath)
Output:=SubStr("I'm scripting, awesome!", 16)
什么时候要使用百分号:
当你使用命令时(见前文), 参数是输出变量 OutputVar
或输入变量 InputVar
时除外.
当你使用传统模式(等号前面没有其他符号) 给一个变量赋值时.
什么时候不要使用百分号:
参数中的输入或输出变量. 例如: StringLen
, OutputVar
, InputVar
赋值时左边的变量: 例如: Var = 123abc
在传统 If
语句(不包括表达式) 中, 左边的变量: If Var1 < %Var2%
在表达式中的变量, 例如:
If (Var1 != Var2)
Var1 := Var2 + 100
赋值符号:=
与=
常用代码片段
; Win--->#
; Shift--->+
; Ctrl--->^
; Alt--->!
; 获取当前时间
^1::send data:%A_YYYY%-%A_MM%-%A_DD% %A_Hour%:%A_Min%:%A_Sec%
;输入法状态设置为英文,以避免影响
IME_SET(0)
IME_SET(setSts, WinTitle="")
;-----------------------------------------------------------
; IMEの状態をセット
; 対象: AHK v1.0.34以降
; SetSts : 1:ON 0:OFF
; WinTitle: 対象Window (省略時:アクティブウィンドウ)
; 戻り値 1:ON 0:OFF
;-----------------------------------------------------------
{
ifEqual WinTitle,, SetEnv,WinTitle,A
WinGet,hWnd,ID,%WinTitle%
DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)
;Message : WM_IME_CONTROL wParam:IMC_SETOPENSTATUS
DetectSave := A_DetectHiddenWindows
DetectHiddenWindows,ON
SendMessage 0x283, 0x006,setSts,,ahk_id %DefaultIMEWnd%
DetectHiddenWindows,%DetectSave%
Return ErrorLevel
}