文章目录
- 2.0和1.0版本的区别
- 示例-剪映中f1映射右方向键
- 示例-剪映中按f9触发弹框
- 示例-拳皇97
- 站a
- 下b(难)
- 前冲
- 示例-帧数计数器
- 常见用法
- `#`(井号)的作用
- `::`(双冒号)的作用
- 常用指令
- 注释
- 特殊键有哪些
- 是否支持多开?
- 其他
- 文档
autoHotKey是一款windows自动化快捷键工具,有1.0和2.0版本,推荐2.0。
本来想用这个编辑拳皇宏的,实测效果根本达不到要求,只能做些简单的事情了。
2.0和1.0版本的区别
| 项目 | v1 写法 | v2 写法 |
|---|---|---|
| 热键 | F1:: | F1:: { ... } |
| 结束 | 需要return | 多行热键用{}包起来,不再需要return |
| 发送按键 | Send, {a down}{b down} | Send "{a down}{b down}" |
| 变量 | %var% | var |
| 赋值 | = | := |
| 条件 | If var = 1 | if (var = 1) |
| 错误处理 | ErrorLevel | try / catch |
示例-剪映中f1映射右方向键
#Requires AutoHotkey v2.0;仅在剪映窗口处于前台激活状态时,热键才生效#HotIfWinActive("ahk_exe JianyingPro.exe")F1::{Send"{Right}";如果需要更精准的按键间隔,可以加上 Sleep50(等待50毫秒)}#HotIf示例-剪映中按f9触发弹框
#Requires AutoHotkey v2.0#HotIfWinActive("ahk_exe JianyingPro.exe")F9::{MsgBox"你刚刚按下了 F9,剪映当前在前台。"}#HotIf示例-拳皇97
站a
{Send"{j down}"Sleep(36)Send"{j up}"}下b(难)
前冲
注:外部按键不能和宏冲突,否则宏定义优先。
N键触发,效果为前跑。
#Requires AutoHotkey v2.0;测试站轻拳 v2 版本#HotIfWinActive("Kawaks")N::{Send"{d down}"Sleep(30)Send"{d up}"Sleep(45)Send"{d down}"Sleep(80)Send"{d up}"}return#HotIf实测成功率60%左右,有时跑不起来,搞不懂什么机制。
示例-帧数计数器
需求:
1、winkawaks模拟器中,shift+空格,按一下帧数加1,来实现统计帧数。
2、当按shift+N时,重置为第1帧(用于找到关键点后的后续统计)。
注:这里用到了gui界面,值得参考。
代码:
;winkawaks_frame_v3.ahk;AutoHotkey v2#Requires AutoHotkey v2.0#SingleInstance Forceframe:=0;创建悬浮数字窗口 frameGui:=Gui("+AlwaysOnTop -Caption +ToolWindow +E0x20")frameGui.BackColor:="000000"frameGui.SetFont("s30 bold cWhite","Microsoft YaHei");宽度适当加宽,防止文字显示不全 frameText:=frameGui.AddText("w300 h50 Center","第 0 帧");位置向左平移,靠右上角 frameGui.Show("x"(A_ScreenWidth-800)"y200 NA")#HotIfWinActive("ahk_exe WinKawaks.exe");Shift+空格:透传给游戏并计数+Space::{global frame,frameText Send"{Blind}{Space}"frame++frameText.Text:="第 "frame" 帧"};Shift+N:重置为1+N::{global frame,frameText frame:=1frameText.Text:="第 1 帧"}#HotIf效果如图:
常见用法
| 写法 | 含义 | 示例 |
|---|---|---|
F1:: | 按 F1 触发 | F1::Send "{Right}" |
^a:: | 按 Ctrl+A 触发 | ^a::Send "你好" |
!a:: | 按 Alt+A 触发 | !a::Run "notepad" |
#a:: | 按 Win+A 触发 | #a::MsgBox "Hi" |
; | 注释,不会被执行 | ; 这是注释 |
Sleep 500 | 等待 500 毫秒 | Sleep 500 |
Run "程序路径" | 打开程序或文件 | Run "D:\Code" |
MsgBox "文字" | 弹出提示框 | MsgBox "测试" |
Send "文字" | 模拟输入文字 | Send "hello" |
Send "{Right}" | 模拟按右方向键 | Send "{Right}" |
#(井号)的作用
1、#+指令
2、#+快捷键
::(双冒号)的作用
::(双冒号)用来定义快捷键,左边是快捷键,右边是定义的内容。
如: F1::Send"{Right}"按f1时发送right(按键)指令。 F1# 定义的快捷键::# 快捷键标志Send# 快捷键对应的操作常用指令
| 指令 | 作用 | 例子 |
|---|---|---|
Send | 模拟按键 | Send "{Right}"、Send "{Enter}" |
SendText | 发送普通文本 | SendText "你好" |
Run | 打开程序、文件或网址 | Run "notepad.exe" |
Sleep | 等待一段时间 | Sleep 500表示等 500 毫秒 |
MsgBox | 弹出提示框 | MsgBox "测试" |
WinActivate | 激活指定窗口 | WinActivate "剪映" |
WinWaitActive | 等待某个窗口激活 | WinWaitActive "ahk_exe xxx.exe" |
WinClose | 关闭窗口 | WinClose "记事本" |
WinMove | 移动或调整窗口大小 | WinMove "A", 0, 0, 960, 1080 |
MouseMove | 移动鼠标 | MouseMove 500, 300 |
Click | 模拟鼠标点击 | Click |
Loop | 循环执行 | Loop 3 { ... } |
if / else | 条件判断 | if (x = 1) { ... } |
注释
1、;开头表示单行注释
2、/* */表示多行注释
;这是单行注释/* 这段代码暂时不用 */特殊键有哪些
send后面需要用{}(大括号)包起来的特殊键如下。
| 写法 | 含义 |
|---|---|
{Enter} | 回车 |
{Tab} | Tab |
{Space} | 空格 |
{Escape}/{Esc} | Esc |
{Backspace}/{BS} | 退格 |
{Delete}/{Del} | 删除 |
{Up}/{Down}/{Left}/{Right} | 上下左右方向键 |
{Home}/{End} | 行首 / 行尾 |
{PgUp}/{PgDn} | 上翻页 / 下翻页 |
{F1}~{F24} | 功能键 |
{PrintScreen} | 截屏键 |
{Insert}/{Ins} | 插入键 |
{CapsLock}/{NumLock}/{ScrollLock} | 大小写、数字锁、滚动锁 |
{LWin}/{RWin} | 左/右 Win 键 |
{LAlt}/{RAlt} | 左/右 Alt |
{LShift}/{RShift} | 左/右 Shift |
{LControl}/{RControl} | 左/右 Ctrl |
是否支持多开?
支持多开,如果多个按键有冲突,会覆盖。
例如:a.ahk和b.ahk都定义了同一热键,谁最后加载谁生效。
注:如下两个操作都可以加载
1、启动脚本
2、reload脚本# 别忽略掉这个
其他
文档
官网地址(可以访问,速度不算快,但是够用):
https://www.autohotkey.com/
2.0版本文档():
https://wyagd001.github.io/v2/docs/