在「按键精灵2014」一再出现未响应并且闪退后,迫使自己去寻求一个简便易用的脚本工具,所幸并不难找,那就是 AutoHotkey,一个 Windows 平台上的自动化脚本软件。
快速入门
每个脚本都是需由程序(AutoHotkey.exe)执行的包含命令的纯文本。脚本中还可以包含 热键 和 热字串 或者甚至完全由它们组成. 不过, 在不包含热键和热字串时, 脚本会在启动后从上往下按顺序执行其中的命令.
创建新脚本:
- 下载 并安装 AutoHotkey
- 在桌面或您选择的文件夹中右键点击空白处
- 在菜单中, 选择 新建-> AutoHotkey 脚本
- 输入文件名, 确保它以 .ahk 结尾. 例如:
Test.ahk
- 右键点击此文件并选择 Edit Script
- 在新的空行中,输入下列内容:
#space::Run www.google.com
在上面的语句行中, 首个字符 #
表示 Windows 键; 所以 #space
表示按住 Windows 键然后按下空格键来激活热键。双冒号 ::
表示每次按下此热键时会执行其后续命令,这里是转到 Google 网站。要试用此脚本, 请继续下列操作:
- 保存并关闭此文件.
- 双击此文件来运行. 在任务栏通知区域会出现新的图标.
- 按住 Windows 键并按下空格键,在默认浏览器中会打开网页
- 要退出或编辑此脚本, 则在任务栏通知区域的绿色 “H” 图标上点击右键
注意:
- 多个脚本可以同时运行,其中的每个脚本在任务栏通知区域使用自己的图标
- 每个脚本可以包含多个 热键 和 热字串
- 要让您的脚本在启动计算机时自动运行, 请在开始菜单的启动文件夹中给您的脚本创建快捷方式
快捷键
快捷键能简便地触发动作。在下面的例子中,Win
+ N
被设置为启动记事本,Windows 键用符号 #
表示,它被称为修饰符:
1 |
|
在最后一行中,return
用来结束此热键。不过,如果热键只需要执行单行语句,那么此行可以直接放在双冒号的右边。换句话说,return
可以省略:
1 | #n::Run Notepad |
要在热键中使用多个修饰键,那么需要把它们连续地列出来 (顺序无关紧要)。下面的例子中使用 ^!s
来表示 Ctrl
+ Alt
+ S
:
1 | ^!s:: |
修饰符 | 按键 |
---|---|
# | Windows 徽标键 |
! | Alt 键 |
^ | Ctrl 键 |
+ | Shift 键 |
< | 使用成对按键中左边的那个。例如 <!a 意为 Alt + A ,只是使用左边的 Alt 键才可以触发 |
> | 使用成对按键中右边的那个 |
流程控制
标签
标签比较简单,用来标记一段代码的位置,以 return
结束。
1 | Gosub, Test |
Test 就是一个标签。标签可以用 Gosub 调用,Gosub 执行完后会继续执行下一行。也可以用 Goto 调用,但 Goto 调用完就不会回来了。
除了使用 Gosub 或者 Goto 调用,标签还可以作为其他命令的参数,比如 Hotkey、SetTimer 等等。
标签里的代码默认是执行的。比如这样一个 AHK 文件。
1 | MsgBox, Begin |
即使没有主动调用 Test 标签,Test 标签里的内容还是会被执行。
可以使用动态的标签名来调用标签:
1 | labelName := "Test" |
函数
函数也可以实现标签的功能,但更强大和灵活:
1 | Test1() |
函数的调用方式是函数名加小括号,如果需要传递参数,在括号里添加参数。和标签不一样,函数里的代码默认是不执行的。
可以使用动态的标签名来调用函数:
1 | functionName := "Test" |
函数里可以调用标签,标签里也可以调用函数。标签和函数可以重名。
函数里的标签
在函数里可以再定义标签:
1 | Test() |
代码中 Test2 是一个内部标签,只能在 Test 函数中访问。但不同函数中的内部标签也不能够重名,即所有的标签名必须是唯一的。
总结
总结下标签和函数的区别:
- 定义和调用的方式不同。
- 函数支持参数和返回值,标签不支持。
- 标签默认是执行的,函数默认不执行。
- 调用标签的开销比调用函数小,调用空函数的耗时比调用空标签多百分之几十。
- 函数中可以使用局部变量和静态变量,但标签中只能使用全局变量。
- 某些场景可能只允许用标签,但最新的 AHK 版本基本所有场景都可以用函数了(如果以后想起来有不可取代的场景再补充)。
那么是使用标签还是函数呢?
通常情况,使用函数就可以了。如果考虑到性能,在无需参数和返回值的情况可以用标签取代函数。除非一个函数被高频率地调用,否则优化的效果不大。
脚本示例
编写了多个 AHK 脚本,逐个启动/关闭嫌麻烦?正在全屏看视频,外卖到了想把声音从耳机切换到音箱上又不想打断观看体验?明日方舟 1-7 刷到精污,阿米娅我不想努力了怎么办?
为了解决以上问题,所以编写了 AHK 脚本启动管理器 OneStartUp,声音切换助手 SwitchAudio,明日方舟护肝助手 Arknights 这三个脚本。
AHK脚本启动管理器
AHK 脚本启动管理器 OneStartUp,用来控制所有脚本(包括 OneStartUp 自身)的运行/重启/退出。OneStartUp 需要以管理员权限运行才能关闭其他同样以管理员权限运行的脚本(如 Arknights),所以还可以对自己提权(即以管理员权限重新运行)。
快捷键
功能 | 快捷键 |
---|---|
重启 OneStartUp | Alt + R |
以管理员权限运行 OneStartUp | Alt + A |
退出 OneStartUp | Alt + Q |
运行 Arknights | Alt + F1 |
重启 Arknights | Shift + F1 |
退出 Arknights | Alt + Shift + F1 |
运行 SwitchAudio | Alt + F2 |
重启 SwitchAudio | Shift + F2 |
退出 SwitchAudio | Alt + Shift + F2 |
脚本内容
1 | ; //////////////////////////////////////////// |
音量切换助手
一键切换声音输出设备,免去手动调整的麻烦。
快捷键
功能 | 快捷键 |
---|---|
切换声音输出设备 | Alt + Home |
脚本内容
1 | #Home::switchAudio() |
明日方舟护肝助手
需求其实很简单,《明日方舟》这款游戏公开测试将近一年了,仍有许多玩家的痛点尚未得到解决,比如任务、订单的一键收取功能仍未实装。作为一个模拟器玩家索性使用脚本去实现这些功能,避免枯燥的重复操作。
学习使用 AHK 的源动力就是为了改善《明日方舟》的游玩体验,现在官方已经优化了基建繁琐的“收菜”流程,上面一段话写在优化之前。
有了自动化脚本,搭配上向日葵或 TeamViewer 等远程控制软件,就可以随时随地用手机控制电脑刷 1-7 了,好耶!
快捷键
功能 | 快捷键 |
---|---|
暂停脚本 | Ctrl + Shift + P |
重启脚本 | Ctrl + Shift + R |
输入密码 | Ctrl + Shift + L |
访问基建 + 清理基建和订单 | Ctrl + Shift + F |
Ctrl + B |
|
回首页 | Ctrl + Shift + H |
领取任务 | Ctrl + Shift + T |
1-7 | Ctrl + Shift + G |
7-15 | Ctrl + Shift + Q |
脚本内容
个人使用的 AHK 脚本内容如下,每日首次登录后使用 Ctrl
+F
处理积累的事务。其中,「访问基建」提供多访问 1 位的冗余,「基建」采用 2 贸易站的配置:
1 | ; 暂停脚本 |
模拟器键位
模拟器分辨率更换为 1440x1080,以下内容待更新。
模拟器为 MuMu 模拟器,分辨率为 1440×720 ,「键鼠方案配置文件」放在下面以供下载,同时提供键位截图及说明:
点击下载B
:基建(Base)F
:好友(Friend)
L
:好友列表(List)V
:访问基建(Visit)B
:访问下位(复用)
N
:提醒(Notification)R
:可收取(Receive)M
:贸易站1(MàoYìZhàn)
O
:收取订单(Order)M
:贸易站2(复用)
H
:主页(Home)L
:首页(复用)
参考资料
指南(快速入门)
AHK 中标签和函数的用法