☰
AutoHotkey 鼠标自动化:3 步录下重复点击,随时自动回放
2026/11/4 2:21:00 网站建设 项目流程

AutoHotkey 鼠标自动化:3 步录下重复点击,随时自动回放

【免费下载链接】AutoHotkeyAutoHotkey - macro-creation and automation-oriented scripting utility for Windows.项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkey

每天重复几百次"移到某个位置、双击、等两秒、再点一下"这类鼠标操作的人,绕不开 AutoHotkey。它是一个免费开源的 Windows 宏创建与自动化工具,用自带的脚本语言模拟鼠标键盘、定义热键。把重复的鼠标操作录成脚本自动回放,固定坐标的批量点击和需要还原人手节奏的长流程都能覆盖。

快速上手:三步跑通第一个鼠标脚本

这一节给最短路径:克隆源码、编译、跑通第一个脚本,目标是 10 分钟内看到鼠标自己动。

  1. 克隆源码:
# 拉取 AutoHotkey 源码 git clone https://gitcode.com/gh_mirrors/au/AutoHotkey
  1. 用 Visual Studio 2026(或更新工具集)打开仓库根目录的AutoHotkeyx.sln,选对应平台和平台配置执行 Build,产物是AutoHotkey.exe。

  2. 新建一个.ahk文件,双击用刚编译好的 AutoHotkey 运行:

; 把鼠标移到屏幕坐标 (500, 300),移动耗时 10 毫秒 MouseMove 500 300 10 ; 在鼠标当前位置点一下左键 MouseClick Left

如果鼠标真的移动过去并点了,说明环境通了,后面的录制和回放都基于这两条命令。

场景实战

场景一:把鼠标轨迹录成文本

目标:手动操作时,把坐标和时间戳存下来备用。思路很直白——循环不停读鼠标位置,逐行写进文件:

Loop { MouseGetPos x, y ; 读当前鼠标坐标 FileAppend %x%, %y%, %A_TickCount%`n, rec.txt Sleep 100 ; 每 0.1 秒记一次 } #Esc::ExitApp ; 按 Esc 停止录制

场景二:按原速回放录制的坐标

目标:把 rec.txt 重放一遍。关键是保留时间戳差值,让回放节奏和操作时一致,想改 2 倍速就把差值除以 2:

FileRead text, rec.txt ; 读入整个录制文件 Prev := 0 Loop parse, text, `n { StringSplit f, A_LoopField, , ; 按逗号拆出 x、y、时间戳 MouseMove f1, f2, 10 Sleep % (f3 - Prev) / 2 ; 时间戳差值的一半即 2 倍速 Prev := f3 }

场景三:只在指定窗口里触发的点击

目标:防止脚本在错误窗口乱点。用#IfWinActive加一道前置判断,热键只在前台是指定程序时生效:

#IfWinActive ahk_exe notepad.exe ; 仅记事本激活时启用 ^r:: ; Ctrl+R 触发一次点击 MouseMove 500 300 10 MouseClick Left return #IfWinActive

热键的底层处理逻辑在 source/hotkey.cpp 里,改组合键、调整触发条件都从这里入手。

Speed 与 SendMode:两个关键参数的设计取舍

Speed 参数怎么理解:插值移动与相对坐标

MouseMove 500 300 10里第三个参数是移动耗时(毫秒),0 表示瞬间跳过去。看它的函数签名就明白为什么要把"多久到"单独拆出来:

void MouseMove(int &aX, int &aY, DWORD &aEventFlags, int aSpeed, bool aMoveOffset)

实现在 source/keyboard_mouse.cpp:aSpeed决定插值步数,让轨迹是一段平滑的移动而不是闪现;aMoveOffset决定坐标按绝对值还是相对偏移解释。回放脚本要还原人手节奏,瞬移既容易被目标程序识别为异常输入,也会跳过路径中间的可点击区域,所以"移到哪"和"多久到"必须分开控制。

SendMode:Input、Play、Event 三种模式怎么选

SendMode命令在三种底层发送机制间切换,实现同样集中在 source/keyboard_mouse.cpp,相关的鼠标全局开关(例如控制鼠标移动阻塞的g_BlockMouseMove)定义在 source/globaldata.cpp。三者对应 Windows 不同的输入 API:Input 走最直接的注入通道,速度快,适合绝大多数场景;Play 把事件排队后经后台线程顺序发出,对部分游戏更友好;Event 是最老的方式,兼容一些老旧软件。并存不是冗余——不同程序对不同输入 API 的敏感度不一样,留三个开关才有得选。

避坑指南:四个高频问题怎么解决

  • 点不到管理员权限的窗口 → 权限不足。UAC 会挡住普通脚本向高权限窗口发送输入。用管理员身份运行脚本即可。
  • 坐标和预期差一截 → 多屏或 DPI 缩放。副屏在左侧时坐标为负值,缩放比例也会整体偏移。先在单屏上验证坐标,需要跨屏时改用相对坐标。
  • 脚本停不下来 → 循环没留出口。录制脚本忘写退出热键就会一直跑。每段循环脚本固定带一行#Esc::ExitApp。
  • 个别游戏里无效 → 发送模式不匹配。换成SendMode Play再试,多数情况能解决。

下一步:先录一个最烦的工作流

AutoHotkey 把鼠标操作拆成了可读、可存、可重放的坐标序列,你的手只需要动一遍。现在就挑一个重复次数最多的工作流,按场景一写个 10 行的录制脚本跑一遍,看看回放能省出多少时间。

【免费下载链接】AutoHotkeyAutoHotkey - macro-creation and automation-oriented scripting utility for Windows.项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkey

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询