AutoHotkey v2快速入门
- 代码开发
- 2025-11-14
- 242热度
- 0评论
AutoHotkey v2 快速入门与新版变化
一、AutoHotkey 是什么?
AutoHotkey(简称 AHK)是一个轻量脚本语言,常用于:
- 快捷键映射(热键)
- 自动化操作(如自动输入、自动点击)
- 界面自动化(GUI)
- 文本替换(热字串)
- 小工具开发
v2 是一次 语法完全重写的重大升级,比 v1 更规范、更现代,避免了 v1 的大量“坑点”。
二、v2 的重大变化总览(与 v1 最大不同点)
1. 命令 → 统一改为函数
v1 的命令式语法:
MsgBox, Hello
StringSplit, arr, text, `,
- 参数用逗号分隔
- 空格也可能是参数(极混乱)
- 函数与命令混杂在一起
v2 全改成 函数风格:
MsgBox("Hello")
arr := StrSplit(text, ",")
重要变化:v2 抛弃命令式语法 → 全部函数化。v2 命令被取消,只有函数。
2. 全部需要使用 := 赋值
v1 可以写:
a = 123
v2 只有表达式赋值:
a := 123
3. 不再隐式全局变量
v1 内部函数可随意读写外层变量,这是 bug 源泉。
v2 不再默认“全局变量",要写明:
global count := 0
add() {
global count
count += 1
}
v2 中必须声明:
global count,v1 中:函数可以随便修改函数外的变量(极危险)
4. 所有内置函数名、内置变量名都规范化
例如:
SubStr()→SubStr()(保留,但参数规则变了)StrLen()→ 统一变为StrLen()Keys、Clipboard、A_...变量都大多保持,但行为更一致
5. GUI 系统完全重写
v2 的 GUI 更像现代语言:
gui := Gui()
gui.Add("Text",, "请输入:")
edit := gui.Add("Edit", "w200")
gui.Show()
6. 热键写法更标准
v1:
^a::
MsgBox, Ctrl+A
return
v2:
^a:: MsgBox("Ctrl+A")
7. 异常(Error)机制彻底升级
函数错误会抛出异常:
try {
FileRead("不存在.txt")
} catch e {
MsgBox("错误:" e.Message)
}
三、AutoHotkey v2 必会语法(快速入门)
1. 变量与基本语句
变量赋值
name := "Alice"
count := 10
pi := 3.14
字符串拼接
v2 使用 表达式拼接:
MsgBox("Hi " name ", count=" count)
2. 数组(Array)与对象(Object)
AutoHotkey v2 中 数组与对象本质上都是对象(Object),只是访问方式不同。
🟦 数组(从 1 开始计数)
arr := ["a", "b", "c"]
MsgBox(arr[1]) ; a
arr.Push("d")
遍历:
for i, v in arr {
MsgBox(i ": " v)
}
🟩 对象(键值对)
person := {name: "Tom", age: 20}
MsgBox(person.name)
添加/修改:
person.city := "Shanghai"
🟧 嵌套对象(配置/结构体)
cfg := {win: {w: 800, h: 600}}
MsgBox(cfg.win.w)
🟨 字典用法(键 → 值)
price := {}
price["apple"] := 3
MsgBox(price["apple"])
3. 条件判断 逻辑控制(Script)
if count > 5 {
MsgBox("大于 5")
} else {
MsgBox("小于等于 5")
}
4. 循环
for i, v in arr {
MsgBox("第 " i " 项:" v)
}
5. 函数定义(Functions)= 执行具体操作
v2 中所有动作都通过函数完成
sum(a, b) {
return a + b
}
MsgBox(sum(3, 4))
6. 热键(Hotkey)= 快捷触发入口
热键本质上执行一个函数,只是这个函数没有名字
1、 单动作 → 单行
2、 多动作 → 大括号
最经典示例:Ctrl+Shift+T 弹窗
^+t:: MsgBox("你好 AutoHotkey v2")
运行程序
#n:: Run("notepad.exe") ; Win+N
自动连点器例子(按 F8 开启 / F9 停止)
F8:: {
global clickFlag := true
while clickFlag {
Click
Sleep(50)
}
}
F9:: clickFlag := false
多行必须是:
F6:: {
Click
Sleep(200)
}
- F6 是“触发器”
{ ... }是“动作函数体”- 整个东西合在一起就是一个“热键绑定”
多行代码的“范围”由大括号明确标记,如需要写超过一条动作,就必须加
{ }
7. 热字串(输入自动替换)
::btw::by the way
::gm::Good morning!
8. 自动点击示例
F6:: {
MsgBox("开始点击")
Loop 10 {
Click
Sleep(100)
}
}
四、AutoHotkey v2 常用函数与示例
1. 窗口操作
WinActivate("无标题 - 记事本")
WinMinimize("Calculator")
2. 文件读写
text := FileRead("readme.txt")
FileAppend("追加内容`n", "log.txt")
3. 剪贴板
A_Clipboard := "Hello world"
MsgBox(A_Clipboard)
4. 正则
m := RegExMatch("abc123", "\d+", &out)
MsgBox("数字:" out[0])
五、AHK v2 最经典入门脚本(推荐从这里开始)
#SingleInstance Force
; ==== 基本热键 ====
^+t:: MsgBox("Hello AHK v2") ; Ctrl+Shift+T
; ==== 打开常用软件 ====
#n:: Run("notepad.exe") ; Win+N 记事本
#m:: Run("mspaint.exe") ; Win+M 画图
; ==== 热字串 ====
::gm::Good morning!
::sig::Best Regards,`nAlice
; ==== 自动点击 ====
F6:: {
Loop 20 {
Click
Sleep(50)
}
}
; ==== 程序启动提示 ====
MsgBox("脚本已启动")