AutoHotkey:为每个不同的窗口创建不同的快捷键!!!

AutoHotkey 为每个窗口设置不同的快捷键!


  1. AutoHotkey 版本: 2.0.18(也就是 v2)
  2. 中文在线帮助文档:快速参考 | AutoHotkey v2
  3. 本文只是分享简单的脚本,不是教程.
  4. 有问题可以联系作者.

确保阅读以上条例,避免因版本不同而导致脚本不可用.

基本操作流程:

想要为每个应用都设置自定义的快捷键,需要用到AutoHotkey#HotIf指令.该指令接收一个条件,当条件成立的时候,设置的热键才会生效,所以利用这个指令可以为每个应用都设置成自定义的按键,

这里我将用 Win10 卡牌小游戏做演示.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#HotIf WinActive("Solitaire & Casual Games");这个title可以通过`AutoHotkey Windows spy`来获取.
F1::
{
MsgBox "这是在游戏窗口中按下的F1"
; 在这里添加游戏相关的功能
}

z::
{
;z键映射Ctrl+z键.
Send "{LCtrl DownR}z"
sleep 50
Send "{LCtrl up}"

}
s::
{
;点击发牌区左侧
Send "{Click 840 700}"
}
f::
{
;点击发牌区右侧.
Send "{Click 1100 700}"
}

#HotIf

F1 按键的功能是发送一个弹窗, 可以用来确定脚本已经运行.image-20250727192245467

然后我设置一些快捷键,z键的功能是ctrl+z键的组合热键,用来快速撤销失误的卡片操作,Send "{LCtrl DownR}z"这句是一直持续按住ctrl键,然后在模拟z键的操作,sleep 50 是按住的时长. 没有这句的话,按键会在 0.05 秒内操作并结束,此时可能因为速度太快,而导致游戏没有识别出按键,不会进行操作,经过多次的实验,50 毫秒不会有很大的延时性,也不会因为太快导致游戏按键 Event 没有触发.(设置 sleep 是很有必要的)

下面的sf键是模拟鼠标点击的操作,按下s键,鼠标会快速移动到♣5的位置并单击,而且是没有平移轨迹的,所以这个功能对一些检测性强的游戏不适用,会被识别为使用了脚本,,f键就是快速移动到♠9的位置并单击,

基本按键重映射

z::b,此代码会在按下z键的时候来模拟b键的操作,而原本的b键还是b,此时会丢失z键的功能.

z:: { code ... },此代码后面的大括号就是编程里面的结构,属于是一个整体,没有特别语法默认从上到下的执行.

z::后面的参数有很多种,常用的一些函数是 Send,SendText,Click等,每个函数可接受多个参数,推荐去本文章给出的在线帮助文档去查看.

所有的按键都设置完之后.需要用#HotIf来关闭代码块.也就是在最后输入#HotIf,而不需要任何参数.

一个脚本可以有多个#HotIf WinActive('windows title')代码块,以对不同的窗口执行不同的自定义快捷键版本.

重要提醒

本文只是分享一种个性化定制的方案,不涉及游戏篡改,

因次脚本应用而被游戏检测到并封号,与本文章无关.

本文章不推荐用作游戏脚本的开发,


AutoHotkey:为每个不同的窗口创建不同的快捷键!!!
http://blog.loeng.top/2025/07/25/autohotkeyForGame/
作者
loeng
发布于
2025年7月26日
更新于
2025年9月2日
许可协议