autoHotKey、windows自动化快捷键工具

文章目录

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映射右方向键

c 复制代码
#Requires AutoHotkey v2.0

; 仅在剪映窗口处于前台激活状态时,热键才生效
#HotIf WinActive("ahk_exe JianyingPro.exe")

F1:: {
    Send "{Right}"
    ; 如果需要更精准的按键间隔,可以加上 Sleep 50 (等待50毫秒)
}

#HotIf
示例-剪映中按f9触发弹框
c 复制代码
#Requires AutoHotkey v2.0
#HotIf WinActive("ahk_exe JianyingPro.exe")

F9:: {
    MsgBox "你刚刚按下了 F9,剪映当前在前台。"
}

#HotIf

示例-拳皇97

站a
c 复制代码
{
    Send "{j down}"
    Sleep(36)
    Send "{j up}"
}
下b(难)
前冲

注:外部按键不能和宏冲突,否则宏定义优先。

N键触发,效果为前跑。

c 复制代码
#Requires AutoHotkey v2.0

; 测试站轻拳 v2 版本
#HotIf WinActive("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界面,值得参考。

代码:

c 复制代码
; winkawaks_frame_v3.ahk
; AutoHotkey v2

#Requires AutoHotkey v2.0
#SingleInstance Force

frame := 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")
#HotIf WinActive("ahk_exe WinKawaks.exe")

; Shift + 空格:透传给游戏并计数
+Space:: {
    global frame, frameText
    Send "{Blind}{Space}"
    frame++
    frameText.Text := "第 " frame " 帧"
}

; Shift + N:重置为 1
+N:: {
    global frame, frameText
    frame := 1
    frameText.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、#+快捷键

::(双冒号)的作用

::(双冒号)用来定义快捷键,左边是快捷键,右边是定义的内容。

bash 复制代码
如:
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、/* */表示多行注释

c 复制代码
;这是单行注释
/*
这段代码暂时不用
*/
特殊键有哪些

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/

相关推荐
逆风的蚂蚁1 小时前
linux服务器性能调整怎么落地?我把 CPU 调度、I/O 优先级和内核参数这几个旋钮都拧了一遍
linux·运维·服务器
mennekes2 小时前
临时用电线路标识:插头颜色、钟面标识配套规范
运维·网络·科技·安全·制造
燃烧的枫2 小时前
Windows 下 YOLO11 Det 的 TensorRT C++ 部署
pytorch·windows·tensorrt·关键点识别·yolo11
海宇大数据3 小时前
零信任架构实战:基于海宇全能小微企业报告构建自动化持牌网络小贷小微商户极速助业贷秒级全维风险决策网关
网络·人工智能·架构·自动化
阿狸猿3 小时前
实时数仓架构设计及其应用
自动化
程序猿老A3 小时前
轻量云服务器总是卡,内存占比高?
运维·服务器
猪八宅百炼成仙4 小时前
让 AI 帮你清理电脑而不翻车:一个 Windows 体检调优 Skill 的工程化设计
人工智能·windows
一只鹿鹿鹿5 小时前
智算算力、AI-芯片与产品解析(PPT文件)
大数据·运维·网络·人工智能·物联网·1024程序员节
鱼宵5 小时前
取集合第一个元素,Java 为什么要写三种写法?
java·windows·python·java21