2009-09-02 78 views
0

我正在處理應該啓動由用戶首選項定義的屏幕保護程序的代碼。 (代碼是用Java編寫的,但只能在Windows下運行。)我目前的方法是將註冊表中的ScreenSaveTimeOut值設置爲1;在理論上,這應該在延遲一秒鐘後啓動屏幕保護程序。如何以編程方式調整Windows屏幕保護程序註冊表設置

但實際上,它沒有這樣的事情。我已經在HKEY_CURRENT_USER \ Control Panel \ Desktop \ ScreenSaveTimeOut和HKEY_USERS.DEFAULT \ Control Panel \ Desktop \ ScreenSaveTimeOut中找到了值,但沒有任何結果。當啓動註冊表編輯器時,我可以看到這些值發生了變化,但顯示屬性 - >屏幕保護程序中的「等待」值不會改變。

的專家交換線指示我應該這樣做是爲了使更改立即生效:

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

...但是,這似乎並沒有做任何事情。

任何意見或見解我做錯了什麼?

回答

3

要啓動屏幕保護程序,你可能會發現它更容易只是以「/ 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

+0

我正在建議這個同樣的事情。任何你需要改變註冊表設置的原因,Blair? – JasCav 2009-09-02 20:10:40

+0

+1爲猜測我的計劃B. :-)賈森,我不需要,我只是在尋求最優雅的解決方案。如果我採用這種方法,我還必須編寫一些模擬鼠標移動代碼,以防止屏幕保護程序在我不需要時運行。這是相當可行的,只是我喜歡的黑客而已。玩ScreenSaveTimeOut(可能ScreenSaveActive - 可能不知道我需要,因爲我認爲設置ScreenSaveTimeOut = 0會禁用屏幕保護程序)讓我感覺移動部件更少。 – BlairHippo 2009-09-02 20:31:57

+0

從來沒有真正弄清楚這一點,所以我和Plan B一起去了May,並且爲它做了一個複選標記。 :-) – BlairHippo 2010-06-09 16:49:36

相關問題