お世話になります。
すでに起動しているexeに対して、エクスプローラからダブルクリックでファイルを読み込む際、該当するexeを見つけることはできた(hWndは取得済み)のですが、読み込む方法がわかりません。
現在、下記の構造部分が構築済みです。
Main 関数内(省略しています。)
'多重起動防止
If App.PrevInstance then
FindWindowで該当exe(ウィンドウ)を探す
上記で得たhWndを用いてSetForegroundWindow,ShowWindowで前面表示
※
Else
通常の起動(コマンドラインの解析を含む)
システムを表示
End If
上記の※印部分で、コマンドを送ればと思うのですが、方法が見つかりません。
どうすればよいのか、ご教授願います。
よろしくお願いいたします。
通信相手も自作アプリなら、LinkExecuteメソッドを使ってみては如何でしょう。
魔界の仮面弁士様、ご返答ありがとうございます。
早速、調べて構築してみます。
これかな?
http://www31.ocn.ne.jp/~heropa/vb27.htm
LESIA様 ご返答ありがとうございます。
説明不足で申し訳ありません。
多重起動防止処理は、実装しております。
この処理に引っかかった場合、自分に来たコマンドラインメッセージを、
元々存在していた同アプリに送る方法を探しております。
魔界の仮面弁士様
お世話になります。
linkExecuteですが、テキストを送るためのラベル、テキストボックス等のコントロールを含むフォームが必要となるわけでしょうか?。*印の時点で、コマンドを送った後は、どのフォームも呼びださず終了させたいのですが。
そのようなことはできるのでしょうか。
起動するEXEをActiveX EXEにすると
簡単にできたかも
いまさらですが...
DDE通信用のフォーム自体は、ロードだけ(非表示)にして運用するとか。
それが嫌なら、ファイル渡し、レジストリ渡し、ActiveXによる通信、
共有メモリ、クリップボード渡し等々……
時にはLoopbackにTCPかUDPで…(ぇ
>上記の※印部分で、コマンドを送ればと思うのですが、方法が見つかりません。
コマンドを渡すのはいいのですが
そのコマンドを受け取る方法も考えないと..
どこで受け取ることができるのかな?
①頻繁に起動させない。(頻繁ならキューにためる方法を考えないと)
②他のアプリが起動していない。
③他の作業をしていない。
ならクリップボードの方法が楽かな。
あん様、Dental様、ガッ様
多数のご返答ありがとうございます。
今、DDE通信で構築して動作確認できました。
方法はいろいろあることを知りました。
DDE以外の方法でも試してみようと思います。
チェック忘れていました。
管理者様すみません。
ツイート | ![]() |