如何以编程方式调整 Windows 屏幕保护程序注册表设置
-
21-09-2019 - |
题
我正在编写应该启动由用户首选项定义的屏幕保护程序的代码。(该代码是用Java编写的,但只能在Windows下运行。)我当前的方法是将注册表中的ScreenSaveTimeOut值设置为1;从理论上讲,这应该会在仅仅延迟一秒钟后启动屏幕保护程序。
但实际上,它并没有做这样的事情。我已经点击了 HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveTimeOut 和 HKEY_USERS.DEFAULT\Control Panel\Desktop\ScreenSaveTimeOut 中的值,但没有结果。当我启动 regedit 时,我可以看到值发生变化,但“显示属性”->“屏幕保护程序”中的“等待”值没有变化。
专家交换线程表明我应该这样做以使更改立即生效:
%SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters
...但这似乎没有任何作用。
对我做错了什么有什么建议或见解吗?
解决方案
要激活屏幕保护程序,您可能会发现使用“/s”参数执行 .SCR 文件会更容易,如下所示:
C:\WINDOWS\system32\ssstars.scr /s
或者,我不能说太多关于如何从 Java 执行此操作,但如果您可以调用 user32.dll 中的函数,您就可以像最终用户一样控制屏幕保护程序。这里有几个链接:
- http://www.codeproject.com/KB/cs/ScreenSaverControl.aspx
- http://www.codeproject.com/KB/miscctrl/turning-screen-saver.aspx
(最后,还有 .NET 方法,但我还是不知道如何从 Java 获取它: http://zayko.net/post/C-How-To-Disable-Windows-Screensaver-programmatically.aspx)
不隶属于 StackOverflow