我正在编写应该启动由用户首选项定义的屏幕保护程序的代码。(该代码是用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 中的函数,您就可以像最终用户一样控制屏幕保护程序。这里有几个链接:

(最后,还有 .NET 方法,但我还是不知道如何从 Java 获取它: http://zayko.net/post/C-How-To-Disable-Windows-Screensaver-programmatically.aspx)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top