在 Windows 中以编程方式更改自定义鼠标光标?

2024-04-03

我正在尝试将 Windows 光标(默认为 Windows 自定义方案)更改为我的自定义光标(名为“割绳子”):

有没有办法将所有光标(箭头、忙碌、帮助选择、链接选择...)更改为我的“割绳子”?


如果您想更改默认的鼠标光标主题:

您只需在注册表中更改它即可:

有三个主要的注册表项发挥作用。

  1. 注册表项 HKEY_CURRENT_USER\Control Panel\Cursors 包含活动用户光标

1a) 下面的值是不同类型的光标
1b) 方案源指定当前正在使用的游标方案的类型。

不同的值是:

“0”——Windows 默认值
“1”——用户方案
《2》——系统方案

  1. 注册表键值HKEY_CURRENT_USER\控制面板\光标包含用户定义的游标方案(即方案源 = 1)

  2. 注册表键值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\控制面板\Schemes包含系统游标方案(即方案源 = 2)

如果您已经将路径更改为 HKCU\Control Panel\Cursors 中的一种光标类型,并意识到它没有执行任何操作。你是对的,仅仅更新一个键——例如 HKCU\Control Panel\Cursors\Arrow——是不够的。您必须告诉 Windows 加载新光标。

这就是系统参数信息 https://msdn.microsoft.com/en-us/library/ms724947.aspx要尝试一下,我们将 HKCU\Control Panel\Cursors\Arrow 更改为 C:\WINDOWS\Cursors\appstar3.ani(假设您有此图标),然后调用 SystemParametersInfo。

在 AutoHotKey 脚本中:

SPI_SETCURSORS := 0x57
result := DllCall("SystemParametersInfo", "UInt", SPI_SETCURSORS, "UInt", 0, "UInt", 0, "UInt", '0')
MsgBox Error Level: %ErrorLevel% `nLast error: %A_LastError%`nresult: %result%

翻译成 C#:

[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, uint pvParam, uint fWinIni);
 
const int SPI_SETCURSORS = 0x0057;
const int SPIF_UPDATEINIFILE = 0x01;
const int SPIF_SENDCHANGE = 0x02;

调用它:

SystemParametersInfo(SPI_SETCURSORS, 0, 0, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);

更改为默认 Windows 光标

现在是棘手的部分。如果您查看 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Schemes,您会注意到“Windows Default”被定义为“,”,或者换句话说,没有指针到实际的光标!

现在做什么?不用担心。您所要做的就是将不同的游标类型设置为空字符串,然后像往常一样进行 SystemParametersInfo 调用。事实上,您可以在任何方案中将任何光标类型设置为空字符串,Windows 会将其默认为“Windows 默认”方案中的等效项。

REF:

https://thebitguru.com/articles/programmatically-changing-windows-mouse-cursors/3 https://thebitguru.com/articles/programmatically-changing-windows-mouse-cursors/3

https://social.msdn.microsoft.com/Forums/vstudio/en-US/977e2f40-3222-4e13-90ea-4e8d0cdf289c/faq-item-how-to-change-the-systems-cursor-using-visual- cnet?forum=csharpgeneral https://social.msdn.microsoft.com/Forums/vstudio/en-US/977e2f40-3222-4e13-90ea-4e8d0cdf289c/faq-item-how-to-change-the-systems-cursor-using-visual-cnet?forum=csharpgeneral

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 中以编程方式更改自定义鼠标光标? 的相关文章

随机推荐

  • 在 iOS 上使用可调整大小的图像时避免混合图层

    我试图避免 iOS 上的混合层以提高性能 但是 我注意到我使用的可调整大小的图像backgroundView of my UITableViewCell被标记为混合层 事实上 使用任何可调整大小的图像 即使是没有透明度的 JPEG 都会导致
  • 如何使用 rspec 配置 Sorbet?

    我有一个简单的测试 但是describe关键字在冰糕测试中不起作用 我在这些方法上收到的错误 Method describe does not exist on T class of
  • 增大/缩小 WPF 动画

    在 WPF 中 当用户获得焦点时TextBox 我想要一些动画 可以使TextBox变成多行并使其Width更大 当他打字时 并且当焦点丢失时 TextBox恢复到原来的大小 尺寸未知 另外 最终 TextBox需要在 WPF 内DataG
  • Gunicorn 与 unix 套接字不工作给出 502 bad gateway

    我正在关注http www obeythetestinggoat com book chapter 08 html http www obeythetestinggoat com book chapter 08 html书上说要添加一个un
  • 如何更改 Notepad++ 更改文本行的背景颜色?

    更新 未保存 的文本行有亮粉色 ffc286 背景色 更改和保存的文本行有亮绿色 b5ffb5 此背景对于任何颜色样式都是相同的 我在样式配置器中找不到它 我以为它可能是增量突出显示 但事实并非如此 并且它不在全局设置中 我已经在寻找这个值
  • 授予子网中所有计算机的 mysql 访问权限

    我有一个在 Windows 上运行的 mysql 实例 和架构 我可以通过基于 localhost 作为服务器的连接字符串进行访问 现在我希望能够从同一子网上的另一台计算机访问该数据库 如果可能的话 我想使用单个用户 但允许它从同一子网上的
  • 在 n 层系统中,您应该从数据访问层向业务层返回哪些对象

    例如 如果您有一个名为 Person ID Name 等 的数据库表 数据访问层应将什么样的对象返回给业务层 我在想这样的事情 data access tier public class DataAccess public interfac
  • 具有多个参数的 Blazor EventCallback - 如何响应父主机控件中的事件

    我有一个带有 EventCallBack 参数的 blazor 组件 该组件利用允许多个参数的新结构格式 Parameter public EventCallback lt EmployeeShiftDay DateTime DateTim
  • Java中泛型参数类的反射?

    想象一下以下场景 class MyClass extends OtherClass
  • TableView 复选标记

    我想在选择字典数据数组时在表格视图中放置复选标记 例如 数组包含 10 个模型名称 它是字典 它包含子模型 我的问题是 当我选择子模型时 模型名称自动获得复选标记 现在我为不同的模型和子模型添加了复选标记 但是我们如何根据子模型添加复选标记
  • jquery 在视口检查器中同时检查多个元素

    我有一个 jQuery 函数来检查元素是否在视口中 如果是 它会添加 animate 类来启动动画并使元素可见 上面的方法有效 但现在 有多个元素 jQuery 仅针对该类的第一个元素blogcard 然后执行addClass animat
  • 证书对 Intranet SSL 有用吗?

    我的任务是开发命令行软件的内联网接口 现在我正在研究安全选项 我们的命令行应用程序已经完成 但我还没有开始编写 Web 界面 我不确切地知道潜在客户的安全要求是什么 尽管我相信ssh对于命令行界面来说通常是可以接受的 考虑到这一点 我请求帮
  • WebSocket 和纯 TCP 之间的根本区别是什么?

    我读过关于WebSockets http en wikipedia org wiki Web Sockets我想知道为什么浏览器不能像任何其他桌面应用程序一样简单地打开简单的 TCP 连接并与服务器通信 为什么可以通过 websocket
  • 如何将 Maven 原型添加到 Github?

    我已经使用 Maven 开发了我的自定义项目 我想将其分享给社区 是否可以将其放在 GitHub 上 以便可以从那里下载 并在 create archetype 命令中使用 谢谢 标记 这篇文章可能会提供一点帮助 http cemerick
  • 使用 NSSM 将 NodeJs 进程作为 Windows 服务启动不起作用

    我看过无数关于如何使用 NSSM 的文章 http nssm cc http nssm cc 启动 NodeJS 进程 所以 我有以下简单的 NodeJS 文件 var http require http http createServer
  • PowerShell 从具有多个属性的 XML 中获取属性值

    以下 XML 文件是使用 PowerShell 2 从 2008 R2 故障转移群集运行 Get ClusterGroup 命令的输出的一个对象节点
  • Spyder3 - AttributeError:“SpyderKernel”对象没有属性“_show_mpl_backend_errors”

    我的 Spyder3 有问题 当我打开它时 控制台上会出现此警告 Python 3 8 5 default Jul 28 2020 12 59 40 Type copyright credits or license for more in
  • 检测 IE11 及其内置内存泄漏何时耗尽内存(1.5GB 可回收池)

    IE11 有一个有据可查的 iframe 内存泄漏问题 在 SPA 中 如果您使用 iframe 内存将增长到大约 1 5GB 之后速度会变慢直至崩溃 我的任务是检测浏览器何时即将崩溃并尽快重新启动页面 该应用程序是嵌入在 ASP NET
  • 保持fork最新

    我想将一些东西提交到 github 存储库 但我 显然 没有任何权利这样做 我对该存储库进行了分叉 提交了更改并提交了拉取请求 现在的问题是 过了一段时间 其他人已经提交了原始存储库 这意味着我的分叉不再是最新的 现在应该如何更新我的 fo
  • 在 Windows 中以编程方式更改自定义鼠标光标?

    我正在尝试将 Windows 光标 默认为 Windows 自定义方案 更改为我的自定义光标 名为 割绳子 有没有办法将所有光标 箭头 忙碌 帮助选择 链接选择 更改为我的 割绳子 如果您想更改默认的鼠标光标主题 您只需在注册表中更改它即可