2007 年 8 月 15 日 21 時 34 分

スクリーンセーバーの実装手順


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


スクリーンセーバーを作るためには、
大体以下のような流れで処理を書く必要がある。

・規定のコマンド引数を処理

・設定モード (/C) 時
  ・設定ダイアログを表示

・プレビューモード (/P) 時
  ・プレビュー用小ウィンドウを作成
  ・スクリーンセーバーの絵を描画

・通常モード (/S) 時
  ・多重起動を抑止
  ・スクリーン全体を覆うウィンドウを作成
  ・スクリーンセーバーの絵を描画
  ・パスワードロック画面を表示(非 NT 系で実行時)

・パスワード設定モード (/A) 時
  ・パスワードの設定画面を表示(非 NT 系で実行時)

これらは結構複雑な作業となる。

スクリーンセーバーは、利用者の操作がなければ、
指定した時間の経過によってどんどん起動される。

通常モードの多重起動を防止するために、
既に実行中かどうかを調べ、実行中なら終了するように、
スクリーンセーバー側が実装しなければならない。

特に面倒なのが、非 NT 系環境用のサポートだ。

非 NT 系では、パスワードの設定ダイアログや、
利用者が操作を再開した時に表示するパスワード認証画面は、
スクリーンセーバー側が実装しなければならない。

また、スクリーンセーバーが起動中の場合、
システムにそのことを通知して、
Ctrl + Alt + Del 等の特殊キーを殺す必要もある。

これらの最低限のコードを書くだけでも、
数百行規模のコーディングが必要となるだろう。

スクリーンセーバーの歴史は古いのだが、
最近では本来の役割として使うことが少ないため、
それほど需要のあるものではない。

そのため、スクリーンセーバーの実装を手助けする
ライブラリやフレームワーク等はあまり見かけない。

多く使われているのは、Platform SDK 等に附属している
scrnsave.lib という開発支援ライブラリだろうか。

これは C 言語用のライブラリであり、
上記の作業を大幅に省略してくれる。

ということで、ひとまずは C++ を使って
簡単なスクリーンセーバーを書いてみようか。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.