【故事分享】从一个“自动脚本”的开始:我与 AutoHotkey 的邂逅(深入 AHK + AHI 的自动化开发实战)

【故事分享】从一个“自动脚本”的开始:我与 AutoHotkey 的邂逅(深入 AHK + AHI 的自动化开发实战)
在这里插入图片描述

从一个“自动脚本”的开始:我与 AutoHotkey 的一场较量(深入 AHK + AHI 的自动化开发实战)

📘关键词:AutoHotkey、AutoHotInterception、键盘钩子、自动化脚本、游戏辅助脚本、AHK脚本开发、输入拦截驱动、AHI教程、键鼠控制、键盘事件监听

文章目录


一、故事的开始:当我决定写一个自动脚本

那是一个普通的工作日晚上,我正准备玩一款老游戏放松一下。
但长时间的打怪操作让我腱鞘炎更严重了。于是,我心想:

“我能不能写个脚本,让它帮我自动施法?”

于是,我打开了记事本,写下了我人生中第一行 AHK 代码:

F:: Send, f Sleep, 300 Send, z return 

保存为 auto_f.ahk,双击运行。

没想到,这小小的脚本立刻解放了我的手指——第一次,我感受到了“自动化”的快感。

但事情远没有我想得那么简单……

主要影响如下:所玩游戏禁止使用“按键精灵”,监测到进程中有“按键精灵”打包的exe,游戏自动弹窗并退出。鼠标宏能够设置按键顺序,但关键是按键顺序与按键时长、延迟按键时长这些都是未知。需要做个脚本在游戏中根据实际打怪操作录制记录下来。游戏技能是组合键释放,此外设计键盘按键与鼠标按键的组合方式。游戏中禁止Send方式模拟按键,只有硬件驱动层入手可以。

二、从简单到复杂:脚本在游戏中失效

第二天,我兴奋地打开另一款游戏,却发现——脚本完全不生效。
我在控制台上看了下,脚本明明运行着,但游戏中无论怎么按键都没反应。

于是,我开始了第一次 AHK 排查之旅。

1. 检查 Send 模式

网上的回答很多人提到:

游戏环境中有些按键是“DirectInput”捕获的,普通的 Send 命令模拟不了。

我尝试了各种发送模式:

Send, f SendInput, f SendPlay, f SendEvent, f 

甚至连:

ControlSend,, f, ahk_exe Game.exe 

都不行。

这时候,我第一次了解到:

AHK 的“模拟输入”是基于 Windows 消息(WM_INPUT/WM_KEYDOWN),而很多游戏用的是底层 DirectInput 或 RawInput,所以根本接收不到。

换句话说——我写的脚本“按键”了,但游戏根本没“听到”。


三、深入探索:AHK 的局限与 AHI 的登场

当我在论坛上苦苦寻找解决方案时,一个名字频频出现——AHI(AutoHotInterception)
这是一个 AHK 的扩展库,可以直接调用底层驱动 Interception.sys 来实现真正的键盘与鼠标输入拦截与注入。

它不再通过模拟“系统消息”,而是直接从驱动层发送“真实的键盘输入信号”。
这意味着,哪怕游戏启用了反作弊机制、使用 RawInput 捕获键盘,也有可能接收得到。


四、需求分析:我究竟想做一个怎样的“自动脚本”?

在经历几次失败之后,我重新冷静下来,开始系统地梳理需求。

需求编号功能描述实现方式
1自动按键执行施法操作Send 模拟键盘事件
2支持延迟与频率自定义Sleep + 变量控制
3在游戏中也可生效使用 AHI 驱动层注入
4可监听特定按键组合(如 Shift+F)KeyWait / Hotkey 模式
5提供可视化提示或状态显示GUI 控件或 TrayTip

最终目标是:

写一个稳定可靠、可扩展的自动化输入系统,可在任意游戏中运行。

五、技术选型:AHK + AHI 架构组合

AutoHotkey 本身已经非常强大,但在面对底层输入拦截时需要配合 AutoHotInterception (AHI)

1. AutoHotkey 负责:

  • 脚本逻辑(按键绑定、延时、状态管理)
  • 界面与配置
  • 调用 AHI 的接口层

2. AHI 负责:

  • 驱动层的输入拦截(Interception)
  • 真正的键鼠事件发送
  • 设备识别(多键盘/多鼠标区分)

这两者结合后,就像一个“自动化系统”的前后端:

[AHK脚本逻辑层] → [AHI驱动层] → [真实设备事件] 

六、AHI 安装与配置指南

1. 安装 Interception 驱动

下载地址(可在 GitHub 搜索 “interception driver”)
解压后,管理员模式打开 CMD,运行:

install-interception.exe /install 

安装完成后重启电脑。

2. 获取 AHI 库文件

下载 AutoHotInterception.ahkAutoHotInterception.dll
放入你的脚本目录。

3. 初始化代码示例

#Include AutoHotInterception.ahk global AHI := new AutoHotInterception() keyboardId := AHI.GetKeyboardId(0x046D, 0xC31C) ; Logitech键盘示例 mouseId := AHI.GetMouseId(0x046D, 0xC52B) MsgBox, 设备已绑定完成! 

4. 驱动验证

运行脚本后若显示“设备已绑定完成”,则说明 Interception 工作正常。


七、实战:实现“自动双击”与“延时按键”

有了 AHI,我们终于可以真正做到“底层输入”控制。

#Include AutoHotInterception.ahk global AHI := new AutoHotInterception() keyboardId := AHI.GetKeyboardId(0x046D, 0xC31C) F:: AHI.SendKeyEvent(keyboardId, GetKeySC("F"), 1) ; 按下 AHI.SendKeyEvent(keyboardId, GetKeySC("F"), 0) ; 弹起 Sleep, 300 AHI.SendKeyEvent(keyboardId, GetKeySC("F"), 1) AHI.SendKeyEvent(keyboardId, GetKeySC("F"), 0) return 

运行后,游戏中完美响应两次“真实按键”!


八、进阶功能:组合键与状态切换

为了让脚本更实用,我们可以加上“启用/禁用”开关和组合键支持:

isActive := true #z:: ; Win+Z 开关 isActive := !isActive TrayTip, 脚本状态, % "自动脚本已" (isActive ? "启用" : "禁用"), 1 return ~F:: if (isActive) { AHI.SendKeyEvent(keyboardId, GetKeySC("F"), 1) AHI.SendKeyEvent(keyboardId, GetKeySC("F"), 0) Sleep, 300 AHI.SendKeyEvent(keyboardId, GetKeySC("F"), 1) AHI.SendKeyEvent(keyboardId, GetKeySC("F"), 0) } return 

这下,我可以通过 Win+Z 临时关闭自动脚本,在聊天或打字时不会误触。


九、监控与调试:按键监听与日志输出

为了调试键盘事件,我们可以用 AHI 提供的监听接口:

SetTimer, WatchKeys, 10 return WatchKeys: state := AHI.GetKeyState(keyboardId, GetKeySC("F")) if (state) ToolTip, F 键被按下! return 

你也可以扩展成日志系统,将触发时间、设备ID、状态全部写入文件。


十、程序运行:可视化控制面板(AHK GUI)

AHK 自带的 GUI 系统非常轻量,可以为脚本加上控制面板。

这时,就完成了一个带界面的自动化脚本工具

1. 按键录制

输出为csv文件

在这里插入图片描述

工具界面如下,录制键盘鼠标响应结果

在这里插入图片描述

2. 运行播放工具

  • 在游戏中按下启动组合键(播放|停止)

导入录制结果

在这里插入图片描述


在这里插入图片描述
游戏就不贴了,工具护手自用。

十一、总结与反思:从“脚本玩家”到“系统工程师”的进化

当我第一次写下 Send, f 时,只想偷个懒。
但当我深入到 AHI、驱动层、输入事件捕获时,我突然意识到——

这已经不只是一个“按键脚本”,而是一场关于系统底层与自动化控制的探索。

从 AHK 到 AHI,从消息层到驱动层,我学会了:

  • Windows 输入事件是分层的(User Mode / Kernel Mode)
  • 模拟输入与真实输入的区别
  • AHK 不只是“偷懒工具”,它是一个强大的自动化语言

最后,我总结这次旅程的三个关键词:

阶段关键词技术收获
入门Send 与热键脚本语法与逻辑控制
进阶输入模式与兼容性理解系统输入机制
高阶驱动层注入(AHI)掌握底层交互能力

当你真正理解 AutoHotkey 时,你会发现它不是“游戏脚本工具”,
而是一种——让计算机主动为你工作的语言

也许你最初的起点,只是想自动按个键;
但最终,你会拥有一个理解底层输入原理、能操控系统事件的“自动化思维”。



【授人以鱼】附上已打包好的工具,解压即用。
下载地址:
https://download.ZEEKLOG.net/download/qq_41140324/92171464

========================== 使用说明 ========================== 1、安装驱动 - 右键以 管理员权限 运行 "驱动一键安装.bat" - 安装完成后,提示 done,请 重启电脑 以生效 2、识别设备 ID - 运行 "Monitor.exe" - 勾选单个键盘或鼠标,测试出对应的设备 ID,并记录 - 注意:USB 拔插可能会改变设备 ID,需要重新检测 3、导入或编辑按键脚本 - 启动 "AutoBD.exe",输入有效的键盘以及鼠标的设备ID - 可导入他人分享的 CSV 文件,或自行编辑按键配置后导出分享 4、启动/停止自动化脚本 - 按 Alt+`键(数字1左边的键) 启动或关闭自动化操作 - 自动化脚本基于 AutoBD.exe 执行 ========================== 声明 ========================== - 本工具集基于 AHK 和 AHI 驱动开发,所有操作与作者无关 - 工具本质是通过驱动模拟实际键盘与鼠标操作,因此在使用前必须通过 Monitor.exe 确认正确的设备 ID - USB 拔插可能导致 ID 变化,请确保脚本绑定的是当前设备的正确 ID 

Read more

【MCP】详细了解MCP协议:和function call的区别何在?如何使用MCP?

【MCP】详细了解MCP协议:和function call的区别何在?如何使用MCP?

本文介绍了MCP大模型上下文协议的的概念,并对比了MCP协议和function call的区别,同时用python sdk为例介绍了mcp的使用方式。 1. 什么是MCP? 官网:https://modelcontextprotocol.io/introduction 2025年,Anthropic提出了MCP协议。MCP全称为Model Context Protocol,翻译过来是大模型上下文协议。这个协议的主要为AI大模型和外部工具(比如让AI去查询信息,或者让AI操作本地文件)之间的交互提供了一个统一的处理协议。我们常用的USB TypeC接口(USB-C)统一了USB接口的样式,MCP协议就好比AI大模型中的USB-C,统一了大模型与工具的对接方式。 MCP协议采用了C/S架构,也就是服务端、客户端架构,能支持在客户端设备上调用远程Server提供的服务,同时也支持stdio流式传输模式,也就是在客户端本地启动mcp服务端。只需要在配置文件中新增MCP服务端,就能用上这个MCP服务器提供的各种工具,大大提高了大模型使用外部工具的便捷性。 MCP是开源协议,能让所有A

By Ne0inhk
超详细图文教程:用vscode+copilot(代理模式)便捷使用mcp+一个范例:用自然语言进行3d建模

超详细图文教程:用vscode+copilot(代理模式)便捷使用mcp+一个范例:用自然语言进行3d建模

在vscode使用claude mcp吧! 在vscode更新到最新版本(注意,这是前提)后,内置的copilot可以使用mcp了!!! 关于mcp(Model Context Protocol 模型上下文协议),可以参考我的上一篇文章: MCP个人理解+示例+集成管理+在python中调用示例,给AI大模型装上双手-ZEEKLOG博客 以下是使用教程: 1.点击左下角的齿轮状设置按钮,点击设置 2.在输入面板输入chat.agent.enabled,勾上勾选框 3.点击Ctrl+shift+P,输入reload,点击重新加载窗口,刷新窗口 4.打开copilot后,在右下角将模式改为代理即可。 5.点击工具按钮,开始安装mcp 先去github找到自己想要添加的mcp服务,以blender MCP为例,打开https://github.com/ahujasid/blender-mcp,可以在readme文档里看到详细的安装过程。可以看到,

By Ne0inhk
【大模型系列篇】大模型基建工程:基于 FastAPI 自动构建 SSE MCP 服务器

【大模型系列篇】大模型基建工程:基于 FastAPI 自动构建 SSE MCP 服务器

今天我们将使用FastAPI来构建 MCP 服务器,Anthropic 推出的这个MCP 协议,目的是让 AI 代理和你的应用程序之间的对话变得更顺畅、更清晰。FastAPI 基于 Starlette 和 Uvicorn,采用异步编程模型,可轻松处理高并发请求,尤其适合 MCP 场景下大模型与外部系统的实时交互需求,其性能接近 Node.js 和 Go,在数据库查询、文件操作等 I/O 密集型任务中表现卓越。 开始今天的正题前,我们来回顾下相关的知识内容: 《高性能Python Web服务部署架构解析》、《使用Python开发MCP Server及Inspector工具调试》、《构建智能体MCP客户端:完成大模型与MCP服务端能力集成与最小闭环验证》   FastAPI基础知识 安装依赖 pip install uvicorn, fastapi FastAPI服务代码示例  from fastapi import FastAPI app

By Ne0inhk
02-mcp-server案例分享-Excel 表格秒变可视化图表 HTML 报告,就这么简单

02-mcp-server案例分享-Excel 表格秒变可视化图表 HTML 报告,就这么简单

1.前言 MCP Server(模型上下文协议服务器)是一种基于模型上下文协议(Model Context Protocol,简称MCP)构建的轻量级服务程序,旨在实现大型语言模型(LLM)与外部资源之间的高效、安全连接。MCP协议由Anthropic公司于2024年11月开源,其核心目标是解决AI应用中数据分散、接口不统一等问题,为开发者提供标准化的接口,使AI模型能够灵活访问本地资源和远程服务,从而提升AI助手的响应质量和工作效率。 MCP Server 的架构与工作原理 MCP Server 采用客户端-服务器(Client-Server)架构,其中客户端(MCP Client)负责与服务器建立连接,发起请求,而服务器端则处理请求并返回响应。这种架构确保了数据交互的高效性与安全性。例如,客户端可以向服务器发送请求,如“查询数据库中的某个记录”或“调用某个API”,而服务器则根据请求类型,调用相应的资源或工具,完成任务并返回结果。 MCP Server 支持动态发现和实时更新机制。例如,当新的资源或工具被添加到服务器时,

By Ne0inhk