すでに起動してある同じEXEにコマンドをおくるには

解決


Kahzu  2005-02-18 20:36:03  No: 88503

お世話になります。

すでに起動しているexeに対して、エクスプローラからダブルクリックでファイルを読み込む際、該当するexeを見つけることはできた(hWndは取得済み)のですが、読み込む方法がわかりません。

現在、下記の構造部分が構築済みです。

Main 関数内(省略しています。)
'多重起動防止
If App.PrevInstance then
    FindWindowで該当exe(ウィンドウ)を探す
    上記で得たhWndを用いてSetForegroundWindow,ShowWindowで前面表示
    
    ※

Else
    通常の起動(コマンドラインの解析を含む)
    システムを表示
End If
    
上記の※印部分で、コマンドを送ればと思うのですが、方法が見つかりません。
どうすればよいのか、ご教授願います。
よろしくお願いいたします。


魔界の仮面弁士  2005-02-18 20:52:19  No: 88504

通信相手も自作アプリなら、LinkExecuteメソッドを使ってみては如何でしょう。


Kahzu  2005-02-18 21:08:02  No: 88505

魔界の仮面弁士様、ご返答ありがとうございます。
早速、調べて構築してみます。


LESIA  2005-02-18 22:10:28  No: 88506

これかな?
http://www31.ocn.ne.jp/~heropa/vb27.htm


Kahzu  2005-02-18 22:43:25  No: 88507

LESIA様  ご返答ありがとうございます。

説明不足で申し訳ありません。
多重起動防止処理は、実装しております。
この処理に引っかかった場合、自分に来たコマンドラインメッセージを、
元々存在していた同アプリに送る方法を探しております。


Kahzu  2005-02-18 23:08:51  No: 88508

魔界の仮面弁士様

お世話になります。
linkExecuteですが、テキストを送るためのラベル、テキストボックス等のコントロールを含むフォームが必要となるわけでしょうか?。*印の時点で、コマンドを送った後は、どのフォームも呼びださず終了させたいのですが。
そのようなことはできるのでしょうか。


あん  2005-02-18 23:10:11  No: 88509

起動するEXEをActiveX  EXEにすると
簡単にできたかも
いまさらですが...


Dental  2005-02-19 00:02:14  No: 88510

DDE通信用のフォーム自体は、ロードだけ(非表示)にして運用するとか。

それが嫌なら、ファイル渡し、レジストリ渡し、ActiveXによる通信、
共有メモリ、クリップボード渡し等々……


ガッ  2005-02-19 01:53:20  No: 88511

時にはLoopbackにTCPかUDPで…(ぇ


あん  2005-02-19 02:10:09  No: 88512

>上記の※印部分で、コマンドを送ればと思うのですが、方法が見つかりません。
コマンドを渡すのはいいのですが
そのコマンドを受け取る方法も考えないと..
どこで受け取ることができるのかな?

①頻繁に起動させない。(頻繁ならキューにためる方法を考えないと)
②他のアプリが起動していない。
③他の作業をしていない。
ならクリップボードの方法が楽かな。


Kahzu  2005-02-19 02:44:35  No: 88513

あん様、Dental様、ガッ様

多数のご返答ありがとうございます。
今、DDE通信で構築して動作確認できました。
方法はいろいろあることを知りました。
DDE以外の方法でも試してみようと思います。


Kahzu  2005-02-19 02:45:19  No: 88514

チェック忘れていました。
管理者様すみません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加