我制作了一个改变鼠标灵敏度的程序,就像使用控制面板一样。
更改是在注册表中进行的,HKEY_CURRENT_USER\Control Panel\Mouse
处的密钥实际上已完成(我已从regedit.exe检查过它们),但鼠标的工作方式就好像没有进行更改一样。换句话说,更改不会产生任何影响,只有在您使用控制面板时才会发生。他们为什么不生效?
答案 0 :(得分:1)
Windows注册表不是一直刷新的东西。您所做的更改将在当前用户(即其HKEY_CURRENT_USER的原因)之后再次登录,或者在您使用控制面板后说明,这将读取注册表。我不知道你的课程是用哪种语言写的,但是你应该看一下这个链接:" this post"
答案 1 :(得分:1)
通常,不支持直接调整注册表设置,尤其是在有用于调整设置的API时。在这种情况下,API为SystemParametersInfo。特别是,您需要使用SPI_SETMOUSESPEED
作为uiAction
参数的参数。
换句话说,更改不会产生任何影响,只有在您使用控制面板时才会发生。他们为什么不生效?
因为它通常比在注册表中设置值多一点。通常,在更改值之后必须发送通知,以便告知计算机上的所有其他软件删除任何缓存的值并将其替换为现在在注册表中的新值。在许多情况下,通知将采用广播消息的形式。
对于鼠标驱动程序设置,您可能需要使用SPIF_UPDATEINIFILE
参数作为fWinIni
参数。您可能还需要将其与SPIF_SENDCHANGE
进行OR广播以广播WM_SETTINGCHANGE
消息,但我不确定。