首页/新闻资讯/正文详情

AutoHotkey 隐藏鼠标光标完整指南:用 ShowCursor 让指针 5 分钟消失

发布时间:2026/11/4 19:06:29 来源:云帆数科 栏目:资讯中心
AutoHotkey 隐藏鼠标光标完整指南:用 ShowCursor 让指针 5 分钟消失
AutoHotkey 隐藏鼠标光标完整指南用 ShowCursor 让指针 5 分钟消失【免费下载链接】AutoHotkeyAutoHotkey - macro-creation and automation-oriented scripting utility for Windows.项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkeyAutoHotkey 是一款面向 Windows 的宏创建与自动化脚本工具支持鼠标控制、窗口操作和热键绑定。如果你想在演示、录屏或游戏中让鼠标指针临时消失本文基于源码把「隐藏光标」这件事讲透为什么它没有一条现成命令、正确的做法是什么、以及最容易把光标「弄丢」的几个坑。先破个误区AutoHotkey 没有 SystemCursor 这个命令网上不少文章会写SystemCursor(Off)一行搞定隐藏。但在本仓库的源码里并不存在这样一个内置函数。我全局检索过没有任何叫SystemCursor、MouseHide或HideMouse的命令。那光标到底怎么藏答案是绕一下Windows 自己提供了ShowCursor这个 API 来控制系统光标的显隐而 AutoHotkey 用DllCall就能直接调到它。所以正确的思路是借用系统能力而不是指望 AHK 自带函数。下面这套写法在 v1 和 v2 里都通用。原理ShowCursor 计数器以及源码里的位置把光标想成有一个「显示计数」计数为0→ 光标隐藏计数 0→ 光标显示每次调用ShowCursor会去增减这个计数增减到 0 就藏起来加回来就亮起来。理解了这点你就明白为什么**「藏」和「显」必须成对出现**——这也是后面所有坑的根源。对照源码鼠标相关的核心逻辑分散在这几个文件里source/keyboard_mouse.cpp鼠标移动、点击、拖拽的底层实现source/keyboard_mouse.hMouseMove、MouseClick、OurBlockInput等接口声明source/lib/functions.h内置函数签名能确认MouseClick、MouseMove、MouseGetPos这些命令真实存在source/hook.cpp低级鼠标钩子负责拦截/放行物理鼠标事件一句话隐藏光标显示层和冻结鼠标输入层是两码事源码里也是分开处理的。让光标消失的第一步ShowCursor 调用最小可用片段记住「成对」这个原则就行; 隐藏把计数压到 0 DllCall(user32\ShowCursor, Int, 0) ; 恢复把计数加回来 DllCall(user32\ShowCursor, Int, 1)user32\前缀显式指明函数所在的系统 DLL避免解析歧义。三个实用场景直接抄以下按 v2 语法示例本仓库即 v2 源码。v1 用户把窗口判断的写法换回 v1 即可核心的DllCall部分完全一致。一键切换按 F1 藏 / 显#Persistent #SingleInstance Force hidden : false #ExitSub ; 关键脚本退出前先还光标 if hidden DllCall(user32\ShowCursor, Int, 1) Return F1:: hidden : !hidden DllCall(user32\ShowCursor, Int, hidden ? 0 : 1) Return#ExitSub是这里的保险丝哪怕脚本被强制关闭也会先判断状态、把光标恢复防止指针「失踪」。只在演示窗口生效做 PPT 时常常希望「进了这个窗口才自动藏」#If WinActive(ahk_exe powerpnt.exe) ; 仅当 PowerPoint 激活时 F1:: hidden : !hidden DllCall(user32\ShowCursor, Int, hidden ? 0 : 1) #If ; 结束作用域这样快捷键就不会在别的程序里误触发。进入游戏自动隐藏把「检测目标窗口」和「切换状态」拆开用定时器轮询更省心#Persistent SetTimer, CheckGame, 2000 CheckGame: if WinActive(ahk_class GameWindowClass) ; 换成你游戏的窗口类/可执行名 { if !hidden { hidden : true DllCall(user32\ShowCursor, Int, 0) } } else if hidden { hidden : false DllCall(user32\ShowCursor, Int, 1) ; 切出去立刻还光标 } Return多显示器环境下判断全屏时可以参考MonitorGetCount、MonitorGetWorkArea这类内置函数见 source/lib/functions.h把窗口矩形和工作区对比即可。隐藏光标的 4 个坑附修复代码坑 1只藏不显光标永久失踪。最经典的翻车现场。对策就是上面代码里的#ExitSub——任何可能让脚本退出的路径都要有恢复逻辑。坑 2计数器漂移。hide和show数量必须相等。所以用一个hidden变量记录状态、只在状态变化时才调用避免重复增减把计数带偏。坑 3把「隐藏光标」当成「冻结鼠标」。想让鼠标彻底动不了那不是ShowCursor的活而要靠BlockInput或鼠标钩子。源码里g_BlockInput、g_BlockMouseMove就是干这个的见 source/globaldata.h 与 source/hook.cpp。两者用途不同别混用。坑 4忘记恢复计时器。上面的CheckGame用了SetTimer若脚本中途异常退出最好也配合退出清理避免残留。一张表分清隐藏 / 冻结 / 移动你想做什么用什么影响范围让指针视觉上消失DllCall(user32\ShowCursor, ...)仅显示层彻底锁住鼠标输入BlockInput/ 鼠标钩子输入层移动指针到坐标MouseMove显示层在坐标上点击MouseClick触发目标程序读取当前指针坐标MouseGetPos只读这些命令都能在本仓库的 source/lib/functions.h 里找到对应签名可以放心使用。怎么跑起来需要自己编译时拉取仓库并用 Visual Studio 打开解决方案git clone https://gitcode.com/gh_mirrors/au/AutoHotkey然后打开 AutoHotkeyx.sln 编译。项目整体说明见 README.md。小结AutoHotkey 里没有SystemCursor这种魔法命令真正可靠的做法是DllCall(user32\ShowCursor, ...)。抓住三条主线就能稳成对调用藏一次就必须显一次退出兜底用#ExitSub保证光标永远还回来分清层次隐藏看ShowCursor冻结看BlockInput/钩子把这三点落进脚本无论演示、录屏还是游戏光标想藏就藏、想回就回不会再「失踪」。【免费下载链接】AutoHotkeyAutoHotkey - macro-creation and automation-oriented scripting utility for Windows.项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkey创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Dubbo - 入门课程
Dubbo - 入门课程

学习网址:https://www.bilibili.com/video/BV1ns411c7jV/?vd_source461545ff50a35eaeaa8218ecdc5f7152 时长:4小时17分钟 从分布式系统的基本概念出发,由浅入深,记录了RPC原理,Dubbo基本使用,Dubbo高可用… · 2026/11/4 19:05:28

Chat2DB 数据库客户端版本怎么选:社区版和 Pro 版的真实差异与避坑清单
Chat2DB 数据库客户端版本怎么选:社区版和 Pro 版的真实差异与避坑清单

Chat2DB 数据库客户端版本怎么选:社区版和 Pro 版的真实差异与避坑清单 【免费下载链接】Chat2DB Chat2DB is a free, cross-platform, local-first database client and SQL workspace for developers, DBAs, analysts, and data teams. Connect to 40 databases, … · 2026/11/4 19:05:28

Kavita 媒体转换完整指南:用 WebP 与 AVIF 给你的漫画书库瘦身
Kavita 媒体转换完整指南:用 WebP 与 AVIF 给你的漫画书库瘦身

Kavita 媒体转换完整指南:用 WebP 与 AVIF 给你的漫画书库瘦身 【免费下载链接】Kavita Kavita is a fast, feature rich, cross platform reading server. Built with the goal of being a full solution for all your reading needs. Setup your own server and s… · 2026/11/4 19:05:28

微服务架构下基于Nacos的轻量级任务调度方案设计与实现
微服务架构下基于Nacos的轻量级任务调度方案设计与实现

1. 项目背景与核心问题在微服务架构中,任务调度系统是不可或缺的基础组件。XXL-JOB作为国内广泛使用的开源调度系统,以其稳定性和功能完整性赢得了大量用户的青睐。然而,在全面采用NacosSpring Cloud Alibaba技术栈的架构中,我们发… · 2026/11/4 21:12:16

MMORPG服务端3.2.2本地搭建:认证、世界服与数据库排错
MMORPG服务端3.2.2本地搭建:认证、世界服与数据库排错

3.2.2 这个版本号,在游戏服务端研究的圈子里算是一个绕不开的坐标。它处在客户端协议还没有大规模加密、服务端模拟框架的文档相对完整、社区沉淀下来的调试经验也足够多的那个时间段,所以很多人想弄明白“一个 MMORPG 的服务端到底是怎么跑起来的”&… · 2026/11/4 21:12:16

AI智能理论到工程实践:泛化、缩放定律与排查方法
AI智能理论到工程实践:泛化、缩放定律与排查方法

“AI智能的理论的概述”这个说法,第一次看到的时候我愣了几秒。它不像一本教材的目录,也不像某个具体技术的名字,更像是有人想把一整套关于智能的假设、模型和边界条件塞进一句话里。我在这个方向待了十来年,从最早手推感知机的权… · 2026/11/4 21:12:16

系统音频捕获+实时字幕翻译:LiveCaptions-Translator 实战配置与避坑指南
系统音频捕获+实时字幕翻译:LiveCaptions-Translator 实战配置与避坑指南

实时语音翻译这件事,我前后折腾过不下五套方案,从最早的手动转录加翻译拼接,到后来的本地模型串联,再到现成的桌面工具,踩过的坑能写满两页纸。LiveCaptions-Translator 是我目前留在机器上长期使用的一套,… · 2026/11/4 21:12:16

Linux 上 Miniconda 安装配置全攻略:环境隔离与避坑指南
Linux 上 Miniconda 安装配置全攻略:环境隔离与避坑指南

1. 为什么我不推荐直接用系统自带的 Python 很多人第一次在 Linux 上装 Python 环境,习惯性敲 sudo apt install python3 ,装完发现版本是系统仓库里那个老掉牙的 3.8 或者 3.10,然后 pip 装包时各种权限报错,最后被迫 sudo pi… · 2026/11/4 21:12:16

N4系统集成避坑:协议矩阵、Device点数与BACnet IP开放
N4系统集成避坑:协议矩阵、Device点数与BACnet IP开放

简介:《N4系统集成介绍-2021.pdf》面向楼宇自控、弱电集成与IBMS对接人员,聚焦霍尼韦尔N4平台在BA系统及第三方设备接入中的架构理解与接口开放选型。文档以NIAGARA4集成架构为主线,梳理冷热源、空调、变配电、电扶梯、能源计费、消防、智能照… · 2026/11/4 21:11:14

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码