複数ファイルを同一のアプリで起動するには?

解決


はる  2004-01-17 10:59:31  No: 6786  IP: 192.*.*.*

一度に複数のファイルを同一のアプリケーションで開きたいのですが、
2重起動可のアプリだと、ファイル数分だけアプリが起動してしまいます。
(ShellExecuteを使用してファイルを開いています)

これを最初に起動させたアプリで全て開くにはどうしたら
よいのでしょうか?

編集 削除
jok  2004-01-17 11:48:33  No: 6787  IP: 192.*.*.*

1) 起動されたときすでに自分と同じアプリが起動済みかどうか調べる
2) 起動済みであれば、それに何らかの方法で今起動されたときの ParamStr(1) 
を知らせて、自分は終了する。
3) 起動済みでなければ、自分で開く

という論理。1) は二重起動防止と同じ論理。2) はプロセス間通信の応用。

編集 削除
jok  2004-01-17 12:57:17  No: 6788  IP: 192.*.*.*

追加です。

4) ParamStr(1) がなければ何もしないで起動する。

編集 削除
はる  2004-01-18 01:43:21  No: 6789  IP: 192.*.*.*

>jokさん

ご返答ありがとうございます。
色々と検索して調べてみたところ、
起動対象アプリのウィンドウハンドルを取得して
SendMessageで制御していく方法が見つかりました。

ただウィンドウハンドルを知るにはPro版に付いてくるWinSightが
必要なようでPersonalを使っている私には無理なようです。残念。

とりあえず、また別な方法を考えてみます…

編集 削除
たかみちえ  URL  2004-01-18 02:48:24  No: 6790  IP: 192.*.*.*

ん?ウィンドウハンドルはFindWindow APIやEnumWindows APIなどで得るから、WinSightはいらないですよ(WinSightはウィンドウクラスなどを確認するだけ と言うソフトだと思います。持ってませんけど)。
ウィンドウクラスは、Delphiのソフトなら自分で設定できる(フォームのNameプロパティにTをつけたのと同じ)ので問題なしです。
  自分のソフト以外のウィンドウクラスは、Finder System(http://www.h3.dion.ne.jp/~hanagex/)  とか。つくりは簡単なので、自作もできるでしょう。

編集 削除
はる  2004-01-19 08:30:37  No: 6791  IP: 192.*.*.*

>たかみちえさん

こんなツールがあったんですね!
これで再度チャレンジしてみます。
ありがとうございました。

編集 削除
にしの  2004-01-19 15:46:32  No: 6792  IP: 192.*.*.*

解決済みのようですが、wnd_Broadcastに対してSendMessageすれば、全てのトップウィンドウにメッセージが送られますよ。
場合によっては、予期せぬアプリケーションが誤作動する(そのメッセージを処理してしまう)こともありますが。

編集 削除