2007 年 8 月 9 日 23 時 57 分

スクリーンセーバーのコマンドライン


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


[写真]


スクリーンセーバーが普通の EXE と異なる点は、
コマンドライン引数の意味が厳密に決められていることだ。

スクリーンセーバーはシステムによって起動され、
その際に行うべき処理が、コマンドライン引数で示される。
コントロールパネルの画面から呼び出される事が多い。

そのため、スクリーンセーバーは、
以下の引数を処理しなければならない。

(大小文字は区別しない。####### は任意桁の 10 進文字列)

●"-s", "/s"
 ⇒実行

●なし, "-c", "/c", "-c:#######", "/c:#######"
 ⇒設定画面表示

●"-p #######", "/p #######"
 ⇒スクリーンセーバーの縮小プレビューを実行

●"-a", "/a"
 ⇒パスワード設定画面を表示(Win9x)

/s スイッチが渡された場合、
プログラムはスクリーンセーバー本来の機能を実行する。
最初に画面全体を覆うウィンドウを作成し、
そのウィンドウに好き勝手に描画するのが一般的だ。

これは、利用者の操作が一定時間なかった場合や、
コンパネの画面の「プレビュー」ボタンから呼び出される。

コマンドラインなし、または /c スイッチが渡された場合、
プログラムはスクリーンセーバー固有の設定画面を表示する。
また、/c:1234567 のように数値文字列が渡された場合は、
この数値をウィンドウハンドル(HWND)と解釈し、
そのウィンドウをオーナーとしてダイアログを表示する。

これは、SCR ファイルを右クリックして「設定」や、
コンパネの画面の「設定」ボタンから呼び出される。
後者の場合、HWND が渡されるのだが、
設定画面のダイアログボックスが表示されている間に、
元のウィンドウを閉じられないようにするためである。

/p:1234567 のようなスイッチが渡された場合、
プログラムは小さなプレビューを実行する。

動作としては /s スイッチと似ているが、
プログラムは画面全体に描画するのではなく、
引数の数値文字列をウィンドウハンドル(HWND)と解釈し、
そのウィンドウの範囲に対して描画する。

これは、コンパネの画面の上の方に表示されている、
ディスプレイを模した小さなウィンドウ内に表示するために、
スクリーンセーバーを選択したらすぐに呼び出される。

/a スイッチが渡された場合、
プログラムはパスワードの設定画面を表示する。

スクリーンセーバーの実行をキャンセルするために、
パスワードの入力を求めるような設定にした場合、
そのパスワードをあらかじめ決めておかなければならない。

これはコンパネの画面の「変更」ボタンから呼び出されるが、
独自にスクリーンセーバー用のパスワードを指定できる、
Windows 95/98/Me でしか使われることがない。
(写真は、Windows 98 の例である)

Windows NT 系では、OS の認証基盤を使うため、
OS が自動的にパスワードの制御を行ってくれるため、
このスイッチが利用されることはないのである。



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