このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。
スクリーンセーバーを作るためには、
大体以下のような流れで処理を書く必要がある。
・規定のコマンド引数を処理
・設定モード (/C) 時
・設定ダイアログを表示
・プレビューモード (/P) 時
・プレビュー用小ウィンドウを作成
・スクリーンセーバーの絵を描画
・通常モード (/S) 時
・多重起動を抑止
・スクリーン全体を覆うウィンドウを作成
・スクリーンセーバーの絵を描画
・パスワードロック画面を表示(非 NT 系で実行時)
・パスワード設定モード (/A) 時
・パスワードの設定画面を表示(非 NT 系で実行時)
これらは結構複雑な作業となる。
スクリーンセーバーは、利用者の操作がなければ、
指定した時間の経過によってどんどん起動される。
通常モードの多重起動を防止するために、
既に実行中かどうかを調べ、実行中なら終了するように、
スクリーンセーバー側が実装しなければならない。
特に面倒なのが、非 NT 系環境用のサポートだ。
非 NT 系では、パスワードの設定ダイアログや、
利用者が操作を再開した時に表示するパスワード認証画面は、
スクリーンセーバー側が実装しなければならない。
また、スクリーンセーバーが起動中の場合、
システムにそのことを通知して、
Ctrl + Alt + Del 等の特殊キーを殺す必要もある。
これらの最低限のコードを書くだけでも、
数百行規模のコーディングが必要となるだろう。
スクリーンセーバーの歴史は古いのだが、
最近では本来の役割として使うことが少ないため、
それほど需要のあるものではない。
そのため、スクリーンセーバーの実装を手助けする
ライブラリやフレームワーク等はあまり見かけない。
多く使われているのは、Platform SDK 等に附属している
scrnsave.lib という開発支援ライブラリだろうか。
これは C 言語用のライブラリであり、
上記の作業を大幅に省略してくれる。
ということで、ひとまずは C++ を使って
簡単なスクリーンセーバーを書いてみようか。