AutoHotkey 用 DllCall 隐藏鼠标光标的3种玩法

发布时间:2026/11/4 1:18:38
AutoHotkey 用 DllCall 隐藏鼠标光标的3种玩法

AutoHotkey 用 DllCall 隐藏鼠标光标的3种玩法

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

AutoHotkey 是 Windows 上免费开源的自动化脚本工具,本仓库的 v1 源码可以帮你理解它如何调用 Windows API。录屏、演示时屏幕角落那个晃动的光标很抢镜?用DllCall调一下ShowCursor,两三行脚本就能让它消失,恢复也只需一行。

🎬 谁会用得上

  • 录屏做教程:光标不再抢镜,画面更干净
  • 演示与讲解:观众视线聚焦在内容上,不被指针带偏
  • 大屏展示机:待机画面保持整洁,鼠标移动后又能自动找回光标

🚀 30秒跑起来

先拿到源码,用 Visual Studio 编译出可执行的AutoHotkey.exe,再把脚本存成.ahk文件双击运行即可。

git clone https://gitcode.com/gh_mirrors/au/AutoHotkey

README 里的编译步骤:用 Visual Studio 打开仓库根目录的AutoHotkeyx.sln,选择 Build 和 Platform(Win32 或 x64),执行 Build 即可产出AutoHotkey.exe。

⌨️ 最小可用示例

AutoHotkey 脚本本身没有内置的开关光标命令,但DllCall允许直接调用任意 Windows API,ShowCursor正好控制光标显隐。

; 调用 Windows API ShowCursor:传 0 隐藏,传 1 恢复显示 DllCall("ShowCursor", "int", 0) ; 需要指针回来时,把参数换成 1 再执行一次即可 ; DllCall("ShowCursor", "int", 1)
  • DllCall第一个参数"ShowCursor"指定要调用的系统函数,第二个参数声明参数类型,第三个是具体取值。
  • ShowCursor按计数工作:每次调用会增减一个内部计数,计数小于 0 时光标才真正隐藏。
  • 所以上下文里每调一次"int", 0,恢复时就要相应地多调一次"int", 1。

🎛️ 换个场景怎么玩

热键切换 + 移动自动恢复

演示中常按一个热键进入"无光标"状态,观众一挪鼠标就自动恢复,省去手动切换。

; F9 热键:切换光标显隐,隐藏时鼠标一动就自动恢复 F9:: static off := false off := !off DllCall("ShowCursor", "int", off ? 0 : 1) return ; 进入隐藏状态后,鼠标任意移动即恢复显示 $MouseMove:: if (off) DllCall("ShowCursor", "int", 1) return

效果:按 F9 后光标消失,适合全屏讲解;期间只要移动一下鼠标,光标立刻回来,不会"找不到指针"。

🔍 它是怎么实现的

  • source/hook.cpp:安装键盘/鼠标钩子,负责热键触发、按键拦截和输入注入。
  • source/keyboard_mouse.cpp:Send命令背后的键鼠事件底层实现,基于SendInput等 API。
  • source/keyboard_mouse.h:鼠标点击、移动等内部函数的接口声明。
  • source/DllCall.cpp:DllCall命令的执行逻辑,负责参数打包与 Windows API 调用——本例隐藏光标正是走这条路。

🧯 踩坑与高频问题

光标隐藏了,为什么按一次恢复命令没反应?ShowCursor是引用计数,隐藏次数和恢复次数要一一对应,恢复调用少一次计数就回不到 0。

脚本被关掉后光标一直没回来,怎么办?ShowCursor是全局状态,关闭脚本不会自动还原,务必在退出逻辑里补上恢复调用。

AutoHotkeyx.sln直接运行不行?它产出的是AutoHotkey.exe(解释器),要用它打开.ahk脚本;编译配置选 Win32 或 x64 平台,详见 README。

📌 收尾

这套写法能控制的是 Windows 系统光标:受引用计数约束,个别自绘光标的应用和独占全屏的程序不一定按预期表现。想深入看参数如何传给 API、热键如何拦截输入,从source/DllCall.cpp和source/hook.cpp入手即可。

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

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