exe間でデータの送受信をするには

解決


PG  2009-07-07 21:47:06  No: 35051

皆さんこんにちは。
お世話になっております。

今回もまた、皆さんのお力を拝借したくカキコさせていただきます。

自作exe間でデータの送受信を行いたいと思っています。
すでに2つのexeが起動しているものに関しては送受信ができるのですが、
1つを起動して、もう片方を起動させた時にそこにデータを送信したいのですが、
何かいい方法はないでしょうか。


Manbon  2009-07-08 00:26:07  No: 35052

よくわかりませんが、起動したときに、既に起動している
exeにメッセージを送り、受け取ったほうはそのときに
送信すればいいのではないかと思うのですが・・・


PG  2009-07-08 02:12:19  No: 35053

知識不足で申し訳ないのですが、
メッセージというのは・・・


ttt  2009-07-08 02:30:11  No: 35054

単純なデータならコマンドの引数で渡してやればいいんじゃないでしょうか。

program := 'test.exe'; // 起動するプログラム名
data := '100 200 300'; // 渡したいデータ
CreateProcess(program, AnsiQuotedStr(program, '"') +  ' ' + data, nil, nil, ...);

起動された側ではParamCount, ParamStr関数を使って引数を取り出せます。

for i := 1 to ParamCount do ShowMessage(ParamStr(i));
// "100" "200" "300" が順に表示されるはず

> メッセージというのは・・・
起動したexe間で送受信ができているなら、すでにメッセージを使っているんじゃないですか?
とりあえずはヘルプの「SendMessage」「message指令」あたりを調べてみてください。


TS  2009-07-08 02:49:31  No: 35055

>すでに2つのexeが起動しているものに関しては送受信ができるのですが、
これが出来ているのならManbonさんの回答になると思いますが。

ちなみにいつもお世話になっています、
Mr.XRAYさんの所にもいくつかプログラム例があります。
http://mrxray.on.coocan.jp/Delphi/plSamples/index.htm


PG  2009-07-08 04:52:47  No: 35056

最初に起動するexe(送信側)を仮にAとし、Aから受信側のexeBを起動させます。
Bを起動している間はAはForm1.Hideで隠して、Bが終了したらShowで表示させてます。
それでも起動後にデータを受信することは可能でしょうか?


通りすがり  2009-07-08 05:03:04  No: 35057

> それでも起動後にデータを受信することは可能でしょうか?

tttさんが仰っている「引数のコマンド渡し」であれば
起動直後にデータを渡せますよ。


PG  2009-07-08 05:24:11  No: 35058

なるほど!!
受信できました。
皆さんありがとうございました!


通りすがりの初心者  2009-07-08 18:52:03  No: 35059

解決済みなのに申し訳ないのですが、
これを参考にプログラムしていました。

>>CreateProcess(program, AnsiQuotedStr(program, '"') +  ' ' + data, nil, nil, ...);

について、どの部分がどういった意味なのかどなたかご教授いただけないでしょうか。


TS  2009-07-08 21:40:25  No: 35060

検索を使いましょう。

http://mix.search.goo.ne.jp/#web,oshiete/CreateProcess%2Bdelphi


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

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






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