Как программически настроить настройки реестра экрана Windows
-
21-09-2019 - |
Вопрос
Я работаю над кодом, который должен запустить заставку, определенную пользовательскими предпочтениями. (Код находится в Java, но будет запущен только под Windows.) Мой текущий подход - установить значение ScreensaVetimeout в реестре на 1; Теоретически, это должно пнуть заставку после задержки просто одну секунду.
Но на практике это ничего не делает. Я нажимал значения в обоих hkey_current_user control Panel Desktop Screensavetimeout и Hkey_users.default Панель управления Desktop ScreensaVetimeout без результатов. Я вижу, как значения меняются, когда я запускаю Regedit, но значение «wat» в свойствах дисплея -> заставка не меняется.
Поток экспертов, указанный на обмене, я должен сделать это, чтобы изменения вступили в действие немедленно:
%SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters
... но это, похоже, ничего не сделало.
Любой совет или понимание того, что я делаю не так?
Решение
Чтобы активировать заставку, вам может быть проще, просто выполнить файл .scr с параметром '/s', например, так:
C:\WINDOWS\system32\ssstars.scr /s
Или я не могу сказать много о том, как сделать это из Java, но если вы можете вызвать функции в пользователе32.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-creensaver-programmaly.aspx)