C#でスクリーンセーバーをつくってみる

で作成したスクリーンセーバーは表示される画像はMyPicturesフォルダだけでしたが、他の場所を選択したくなるかもしれません。画像を切り替える速度を変更したくなるかもしれません。そこで自分で設定できるものにします。

ではスクリーンセーバーの設定をするためにはどうすればよいのでしょうか。ここを参考にしました。

White Tiger

上記ページによるとMainメソッドを変更すれば可能であることがわかります。

では前回のプログラムを修正します。

まず設定を保存するためのクラス Config をつくります。設定を保存する場所は

C:\Users\<ユーザー名>\AppData\Roaming\<CompanyName>\<ProductName>\<ProductVersion>

になります。またファイル名は、config-<Guid>.xmlになります。

プログラムが開始されたら設定が保存されているファイルがあるかどうか調べます。なかったら画像の切り替えは2秒おき、画像ファイルはMyPictureフォルダとなります。設定が保存されているファイルがみつかったらこれを読み込み、Configオブジェクトをつくります。

あとはスクリーンセーバーを起動するのであれば Application.Run(new ScreenSaverWindow(config));、スクリーンセーバーのオプション表示をするのであれば Application.Run(new ConfigForm(config));を実行します。

設定のフォームは受け取ったConfigオブジェクトから現在の設定を表示します。[フォルダの設定]がクリックされたらフォルダを選択するダイアログ(FolderBrowserDialog)を表示します。そしてFolderBrowserDialogのOKがクリックされたらフィールド変数PictureFolderPathを変更します。

[OK]がクリックされたら設定をファイルに保存します。[Cancel]がクリックされたら何もしないで終了します。

スクリーンセーバーが起動されたら、Configオブジェクトの情報からフィールド変数のChangingPictureIntervalとTargetDirectoryに値をセットします。あとはC#でスクリーンセーバーをつくってみると同じです。