これ何て呼びますか Part2

別のプロセスの関数を呼び出す方法はありますか?

WINDOWSでプロセスAとプロセスBがあり、
プロセスBの関数ポインタをプロセスAで取得するところまではできるのですが、
この後、プロセスAからプロセスBの関数をコールバックする方法はありますか?

アドレス空間はプロセスごとに固有であるため、
通常のコールバックではうまくいかないと思うのですが・・・。

尚、プロセスAとプロセスBは、異なるプログラムです。

A 回答 (3件)

おっしゃる通りプロセスAのアドレスはプロセスBにとって無意味な数値です。


プロセス間通信でプロセスAの関数の結果をプロセスBで受け取る方法があります。
 ※プロセスAとBが改変できる事が前提

Windowsであれば、SendMessage(MsgはWM_COPYDATA)を使って別プロセスにデータを送信可能です。
関数実行の要求はプロセスB→プロセスA、
関数の結果を受け取るにはプロセスA→プロセスBにSendMessageします。

この回答への補足

>できればプロセスBのスレッドでプロセスAの関数をコールしたかったのですが、

プロセスAとプロセスBが逆でした。すみません。

補足日時:2010/10/28 00:01
    • good
    • 0
この回答へのお礼

できればプロセスBのスレッドでプロセスAの関数をコールしたかったのですが、
やはり難しそうですね。
回答ありがとうございました。

お礼日時:2010/10/27 23:59

参考までに


WindowsおよびLinuxでは
プロセスごとに仮想メモリー空間が構成されます。
従って、プロセスが異なると、仮想メモリー空間が異なるため
互いのアドレスは意味がありません。
(前回答のとおり)
なんらかのプロセス間通信を使う以外に情報をやりとりをする方法
はありません。
ちなみに、プロセスとは、リソース(メモリーをふくめた)の
管理単位でもあります。
また、スレッドとは並行処理され得る最小単位のことで
プロセスは複数のスレッドから構成されます。
同一プロセスのスレッド同士はリソースを共有するので
スレッド同士なら、メモリーアドレスは意味を持つでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2010/10/28 09:23

方法は有ります


が、実際の作り方は、私は全く知りません。
やり方としては、OLEオートメーションサーバーとして最初から
プロセスBのプログラムを設計、作成してやれば出来ると思います。
EXCEL のOLEオートメーションのアレです
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
じっくり勉強してみます。

お礼日時:2010/10/28 00:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報