外部実行ファイルからの返り値を取得するには?


LAFORET  2004-03-17 23:42:34  No: 7725

Cで作成した相関値を求めるプログラムDelphiで呼び出して、
実行させています。(VC6とDelphi5を使ってます。)
Cのプログラムのほうで、相関値がひとつだけもとまり、それ
をDelphiのほうへ戻したいと思ってます。
なにか、良い方法がありましたら、ご教授ください。


にしの  2004-03-18 00:01:22  No: 7726

DLLでよいのでは?


にしの  2004-03-18 19:31:02  No: 7727

実行ファイルでしたね。
読み違えてました。
C側のMain関数の戻り値は、GetExitCodeProcessで取得できると思います。
WinMainの場合の戻り値が取得できるかどうか解りませんが、WinMainのreturnを、ExitProcessにして終了コードを引数に渡せば、Delphi側(呼び出し元)でGetExitCodeProcessを使って取得できます。
この場合、ProcessIdが必要になるので、CreateProcessでVCのEXEを起動して、終了後のProcessIdを使って終了コードを取得できます。


にしの  2004-03-18 19:33:18  No: 7728

もう1つ。
終了コードはLongですので、それ以上の情報、例えば、double型を戻したい場合は使えません。
その場合は、MemoryMappedFileなどで渡せばよろしいかと。


LAFORET  2004-03-18 20:45:38  No: 7729

にしのさん、ありがとうございます。
とりあえず、やりたいことはできております。
しかし、私の場合、一度、テキストファイルに相関値を落として、
余計なファイルを1つ生成してから、Delphiの方でそのファイルを
読み込むという形をとってしまいました。
もっといい方法はないかと悩んでおりました。
CreateProcessあたりでなんとかならないものかと思っていました。
もう少し、勉強したいと思います。
ありがたいヒントをありがとうございました。


jok  2004-03-18 21:53:40  No: 7730

32ビットの整数が二つまでなら、単純なメッセージで送れます。
それより大きい情報なら、クリップボードやメモリマップドファイルなどに
セットして、用意が出来たよ、とメッセージを送ればいいのでは。

あと、WM_COPYDATA ならメッセージで任意の大きさの情報を送れます。


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

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






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