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/AutoHotkeyREADME 里的编译步骤:用 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),仅供参考