2009-09-02 1 views
0

Я работаю над кодом, который должен запускать скринсейвер, определенный пользовательскими настройками. (Код находится в Java, но будет выполняться только под Windows.) Мой текущий подход заключается в том, чтобы установить значение ScreenSaveTimeOut в реестре равным 1; в теории, это должно забить скринсейвер после задержки всего на одну секунду.Как программировать Tweak Windows Screensaver Настройки реестра

Но на практике это не так. Я ударил значения как в HKEY_CURRENT_USER \ Control Panel \ Desktop \ ScreenSaveTimeOut, так и в HKEY_USERS.DEFAULT \ Control Panel \ Desktop \ ScreenSaveTimeOut без каких-либо результатов. Я вижу, что значения меняются, когда я запускаю regedit, но значение «Ожидание» в Свойствах экрана -> Заставка не изменяется.

Эксперты-нить Обмен указано, что должен сделать это, чтобы изменения вступили в силу немедленно:

%SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters

... но это, похоже, не делать ничего.

Любые советы или сведения о том, что я делаю неправильно?

ответ

3

Чтобы активировать экранную заставку, вы можете найти его проще всего выполнить файл .SCR с параметром а «/ S», вот так:

C:\WINDOWS\system32\ssstars.scr /s 

Или, я не могу сказать много о том, как сделать это с Java, но если вы можете вызывать функции в user32.dll, вы можете управлять заставкой, как конечный пользователь. Вот несколько ссылок:

(И, наконец, есть метод .NET, но опять же я понятия не имею, как получить, что с Java: http://zayko.net/post/C-How-To-Disable-Windows-Screensaver-programmatically.aspx)

+0

Я собирался предложить то же самое. Любая причина, по которой вам нужно изменить настройки реестра, Блэр? – JasCav

+0

+1 для угадывания моего плана Б. :-) Джейсон, мне НЕ НУЖНО, я просто стреляю по самому элегантному решению. Если я пойду с этим подходом, мне также придется кодировать некоторые моделируемые движения мыши, чтобы предотвратить заставку, когда я этого не хочу. Это вполне выполнимо, просто немного взломать для меня. Игра с ScreenSaveTimeOut (и, возможно, ScreenSaveActive - не знаю, что мне нужно, так как я думаю, что установка ScreenSaveTimeOut = 0 отключает экранную заставку) поразила меня тем, что у меня было меньше движущихся частей. – BlairHippo

+0

Никогда этого не делал, поэтому я пошел с Plan B. Май, а также раздаю галочку для него. :-) – BlairHippo