スクリーンセーバー停止スクリプト

今回のテーマ: レジストリ操作

デフラグなど、重い処理をするときに一時的にスクリーンセーバーを停止したいことがあります。

たいていの人は、画面のプロパティから一時的にスクリーンセーバーを無効にしていると思います。無効にするだけならまだしも、元に戻すときには多数のスクリーンセーバーから元のスクリーンセーバーを選ばないといけません。結構面倒だったりします。

スクリーンセーバーを一時的に止めるソフトウェアもあります。が、数行のスクリプトで無効/有効を切り替えることができます。

なお、このスクリプトは、Win9xでは動作しません。Win9xではスクリーンセーバーの情報の格納方法が違うためです。Win9x対応版の作成予定はありません。

スクリーンセーバー停止スクリプトダウンロード


プログラムコードの表示

(プログラムコードがここに表示されます)

ウィンドウズXPで確認したところ、スクリーンセーバーの停止は、単純に該当部分のレジストリを削除することにより行っている模様です。

これは「画面のプロパティ」でスクリーンセーバーを「なし」にしたときのレジストリの変化を観察したものです。プログラムから制御するときは、SystemParametersInfoというウィンドウズAPIを使用します。

なら、それをほかの部分に待避して、削除すればスクリーンセーバーの停止が、元に戻せば復帰が行えることがわかります。

コードの流れも、レジストリからスクリーンセーバー読みだし、待避の上削除。読み出せなければ(スクリーンセーバーが「なし」の場合)、待避していたものを復帰するというものです。

今回は、実行結果(スクリーンセーバーの停止/復帰)をポップアップで画面表示することにしました。実行結果を1秒間画面に表示し、「OK」ボタンを押さなくてもポップアップは自動的に閉じられます。