2009-09-02 16 views
0

私は、ユーザーの設定で定義されたスクリーンセーバーを開始するはずのコードに取り組んでいます。 (コードはJavaにありますが、Windows上でのみ実行されます)。私の現在のアプローチは、レジストリのScreenSaveTimeOut値を1に設定することです。理論的には、ちょうど1秒の遅れの後にスクリーンセーバーを蹴るべきである。Windowsのスクリーンセーバーのレジストリ設定をプログラムで調整する方法

しかし実際には、そのようなことはありません。私はHKEY_CURRENT_USER \ Control Panel \ Desktop \ ScreenSaveTimeOutとHKEY_USERS.DEFAULT \ Control Panel \ Desktop \ ScreenSaveTimeOutの両方の値を結果なしでヒットしました。 regeditを起動すると値が変わるのがわかりますが、[ディスプレイのプロパティ] - > [スクリーンセーバー]の[待機]値は変更されません。

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

...しかし、それは何もしていないようでした:

アン専門家交換スレッドは、私はすぐに変更を有効にするために、これを行うべきで示されています。

私が間違っていることに関するアドバイスや洞察はありますか?私は方法について多くを語ることはできない、

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

をまたは:

答えて

3

スクリーン・セーバーを有効にするには、それが簡単にちょうどそうのように、「/ s」はパラメータで.SCRファイルを実行するために見つけるかもしれませんJavaからこれを行うには、user32.dllの関数を呼び出すことができれば、エンドユーザのようにスクリーンセーバーを制御できます。ここではカップルのリンクです:

(最後に、.NETメソッドがありますが、やはり私は、Javaからそれを取得する方法は考えていません:http://zayko.net/post/C-How-To-Disable-Windows-Screensaver-programmatically.aspx)を

+0

私はこの同じことを提案しようとしていた。レジストリ設定を変更する必要がある理由、Blair? – JasCav

+0

+1私のプランB.を推測するために:-)ジェイソン、私はする必要はありません、私はちょうど最もエレガントなソリューションを狙っています。私がこのアプローチに踏み込んだ場合、スクリーン・セーバーが欲しくないときにスクリーン・セーバーが来ないようにするために、シミュレートされたマウスの動きをコード化する必要もあります。これは、私の好みのためにちょうど少しハッキング - y、かなり行うことができます。 ScreenSaveTimeOut(とScreenSaveActive(おそらくScreenSaveTimeOut = 0に設定するとスクリーンセーバーが無効になっていると思うので、私が必要としているかどうかわからない)を使って遊んでいると、動く部品が少なくて済むと思います。 – BlairHippo

+0

これは実際にはこれを理解したことはありませんでしたので、私は計画Bと一緒に行きました。 :-) – BlairHippo

関連する問題