皆さま
先ほど間違えて、久世さん個人に下記回答を送ってしまいました。
久世さんからの回答で全文引用していただきましたが、念のため
MLに投稿しておきます。 トラフィックを増やしてしまって
申しわけございません。
(以下、再送)
――――――――――――――――――――――――――――――――――――
こんにちは、イマジオムの高木です。 いつもお世話になっております。
ちょっと話題が件名とずれてしまうかもしれませんが……
久世さん:
> まずは、なぜグループ分けをしたいかについてですが、自作アプリを
> 複数個同時起動し使用している場合、作業をいったん終了後再度
> その状態を復帰したいと思った場合、アプリの終了時に、現状を把握し、
> その状態の情報をファイルに書き出す必要があります。
>
> 例えば、10個アプリが起動しており、ユーザーが、まず1個を手動で
> 終了。その後、残り9個は、Windows終了により自動で終了という
> ケースの場合、次回起動時には、最後の9個の状態を復帰したいと
> いう内容です。
話題がおもしろくなってきましたね。
もしお書きのようなことをなさるのでしたら、お作りのアプリ(これを
「メインアプリ」と呼びます)とは別に、状態記録・復元用専用のアプリ
(これを「管理アプリ」と呼びます)を作ってはどうでしょうか?
たとえばこんな方法です。
1.メインアプリは、起動と同時に管理アプリとの通信を試み、
通信ができなかったら管理アプリを起動させる。
#管理アプリに通信用のウィンドウを持たせ、その
クラス名を決めておきます。 メインアプリからは
FindWindow と SendMessasage でメッセージ通信を
試みます。
2.メインアプリにも受信用のウィンドウを持たせる。
管理アプリは、メインアプリが起動される(通信が
試みられる)たびに、メインアプリの受信用ウィンドウの
ハンドルをリストに追加する(自分を起動してくれた
メインアプリも忘れずに登録しておく)。
#受信用ウィンドウのハンドルを、次のいずれかの方法で
管理アプリに知らせます。
1.SendMessage で送るメッセージの WParam 引数で
渡す。
2.プロセス起動時にコマンドラインパラメータと
して渡す。
3.管理アプリはまた、メインアプリの終了(受信用ウィンドウの
消滅)を定期的に調べ、検知したらそのメインアプリを
リストから外す。 リストが空になったら自分も終了する。
4.管理アプリはフォームを表示させず、見えないように作っておく。
この方法のメリットは、「管理アプリが、すべてのメインアプリの
終了を見届けることができる」ということです。 管理アプリ側では、
個々のメインアプリの動作状況を完全に把握することができますから、
連動起動・連動終了、実行状態の記録・復元など、やりたい放題です。