TLDR:如何以编程方式隐藏鼠标光标为整个桌面,无论应用程序有焦点?
即使我在Windows鼠标选项中启用了“键入时隐藏指针”,它也不适用于大多数窗口。它似乎只适用于使用标准Windows文本框控件的窗口(如notepad.exe)。在其他任何地方,光标都停留在我键入的内容上方。
当我执行特定操作(例如,按下热键)时,我希望通过编程方式在整个桌面上隐藏鼠标光标**,无论哪个应用程序具有焦点。然后,当移动鼠标时,我希望光标重新出现。
我可以处理热键等,我只需要知道如何隐藏光标。
我所尝试的:
- Cursor.Hide方法只隐藏当前窗体的光标。这不是一个可接受的解决方案。
- Windows API ShowCursor function-似乎根本不工作.光标永远不会消失。
目前我的解决办法是听空格键被按下(暗示我键入了几个字符),然后将鼠标光标移动到桌面的顶部角落,不碍事。然而,这不是一个理想的解决方案,因为它需要移动鼠标很多才能返回到原始位置,以及在Sketchup等应用程序中输入包含空间的尺寸时弄乱鼠标位置。我更希望光标在当前位置变得不可见,然后在移动鼠标时重新出现在同一位置,因为它应该与“键入时隐藏指针”选项一起使用。
我不依赖于C#,但它很容易编译成Windows的可执行文件,我可以在Windows启动时启动它。
感谢您的帮助!
1条答案
按热度按时间0sgqnhkj1#
这是AutoHotkey解决方案,虽然这只是调用Windows API(对于隐藏/显示部分,否则脚本在使用UIA框架跟踪可编辑字段时会有点复杂,当您不输入时不会隐藏指针,并且还跟踪鼠标移动和其他与键绑定相关的机器),但您可以将其转换为C#(或者只需在Windows start上启动AHK脚本)
它使用了Jimi建议的相同逻辑(遍历系统光标并将其指针替换为空白图像),尽管有一个调整来解决指针的比例大小> 1时的问题(如果您只是尝试替换它,它会变得模糊)
它也不适用于自定义应用程序鼠标指针,只有那些你在系统设置中看到的
还没有找到一个解决方案。如何隐藏自定义应用程序指针,虽然这是可能的,因为像AutoHideMouseCursor这样的应用程序可以做到这一点。
Full standalone script source及其所依赖的库
隐藏指针的函数
字符串
和恢复指针的函数
型
P.S.“打字时隐藏指针”确实有缺陷,因为它依赖于应用程序轮询其值并隐藏指针本身,很少有应用程序这样做
P.P.S.还发现了一个更简单的C++ GUI应用程序MousePuff,尽管它也没有隐藏应用程序特定的指针