スクリーンセーバから、他のアプリを起動しようとしたことはありますか?
 私はやってみました。

 別のアプリを起動すること自体は、日記にメモしておく価値があるほど難しいことではなかった。普通に_spawnlpを使えばいい。今回は起動したアプリの終了を待ちたかったので、CreateProcess関数は却下だ。私には待ちかたが分からなかった。
 でもそうやって起動すると、起動したアプリがうまくフルスクリーンになってくれない。単独で起動するとするスクリーンになるのだが、今回の場合タスクバーが表示されてしまうのだ。

 思考錯誤のすえ分かった事は、成功させるためには、呼出し側のWM_CREATEメッセージを処理し終わってから、_spawnlp関数を使わなければならないということ。なんでなんだろう?
 私はWM_TIMERを(多分)一度だけ起こし、そこから起動した。
 また、必要かどうか分からなかったけれどSetWindowPos関数を使い呼出し側のウインドウを背面に移動しておいた。
 とりあえず目的は達成したからよしとしよう。

 本当はC++Builderが使いたかったのだけど、なぜかソース中にエントリポイントの無いプログラムはコンパイルできなかった。
 スクリーンセーバライブラリが使えないじゃん。(T_T)
 というか、scrnsave.libがついているのかさえも謎。他のライブラリにくっついている可能性もありますが。


 ジオブリーダーズ3巻を読んでいて思った。
 「『綾金市』ってどこなんだろう?」
 というわけで調べてみた。リンク(普通のブラウザ用)を見る限り、名古屋市がモデルになっているっぽい。
 確かに、地下鉄もあるし、港もあるし、東海銀行もあるしで、それっぽい。
 なるほどね。

コメント