- - PR -
DLL同士の通信
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-02-03 17:10
おばけさん、Jittaさん、
ご返信、ありがとうございます。
そ、そうなんですかー。
上記のようにやって、ビルドもできるんですけど・・・。 なんか動いていないみたいですねぇ。 もう少し、いじってみます (^^;) | ||||||||||||
|
投稿日時: 2004-02-03 17:20
一応、MSDNのMessageQueueあたりを横目で見ているのですが、別のコンポーネントが必要、なんて書いていないんですよね。 MessageQueueクラスの概要説明にあるサンプルをそのまま打ち込んだら、どうなりますか? #本業が忙しくて、手が回らないのぉ〜 | ||||||||||||
|
投稿日時: 2004-02-03 17:57
下記のサンプル
を実行して見たところ、SendMessage() の
を終えてからエラーになります。 エラー内容は、以下のとおりです。
やはり、MSMQを入れないと、、、 ということなのでしょうか? | ||||||||||||
|
投稿日時: 2004-02-04 02:51
便乗で書き込みですが、私の場合DLLでなくC#で作ったEXEファイル同士で、データの やりとりをどうやればよいのか悩んでいる所です。単純に文字列(ファイル名)を渡したい だけなのですが、簡単な方法が見つからず、APIでSendMessageとWM_SETTEXT を使って逃げようかと思っているところです。 探しているうち、.NET Remotingだのメッセージキューだのキーワードは見つけたの ですが、どちらかというとネットワーク上でのサーバとのやりとり・他端末とのやりとりの 内容が多く、私にはちょっと敷居が高く、適当なサンプルも見つけることができません でした。 もうちょっと手頃な方法がなにかあればいいのですが... メッセージキューは私も少し試してみたのですが、同じエラーがでました。ヘルプを 見ると、なにかインストールしないとダメみたいですね。 | ||||||||||||
|
投稿日時: 2004-02-04 08:32
やっと記述を見つけました。こんなのわかんないよ。。。
う〜ん、インストールの方法が書いてないように思いますね。これって製品の1つ? C++なんですよね?プラットフォームSDKの、「メモリマップファイル」(MapViewOfFile)を使うとか。メッセージキューが利用しているAPIのようです。「共有メモリファイル」(CShareFile MFC)というのもあります。 MSDN検索キー "メモリ" NEAR "ファイル" NEAR "マップ" #余計に混乱させたらごめんなさい | ||||||||||||
|
投稿日時: 2004-02-04 09:23
さらださん、Jittaさん、
ご返信、ありがとうございます。
そうですかぁ。SendMessageというものがあるんですねぇ。 メッセージキューと同様にできるというものなのでしょうか!? メッセージキューもいろいろ試してみたのですが、 やはりうまく動かないです・・・(^^;)
ええ、C++です。 いろいろあるのですねぇ! SendMessageやメモリマップファイル、共有メモリファイルの 概要を少し読んでみて、容易にできそうなものを選んで やってみたいと思います。 (・・・分かるかな(笑)) また、何かお気づきの点がありましたら、 書込みのほど、宜しくお願い致します。 | ||||||||||||
|
投稿日時: 2004-02-04 09:47
ウィンドウメッセージって、自分で定義したメッセージも投げられませんでしたっけ? どうやるのだったか、何か定義がいるのだったか私は全然知らないんですが。 この方法がいいやり方なのかは分かりません。 リモーティングは、他プロセス間ではネットワークを使ったチャネルしか用意はされていなかったような気がするので、同一ホストのEXE間ではちょっとと思うかもしれないですね。 ネットワークを介するのであれば比較的簡単に実現できると思います(この用途では若干大げさな気はしますが)。 あるいは、メモリマップファイルとか、その他プロセス貫通信用の機能を使ったチャネルを誰かが作ってるかもしれない…他力本願 | ||||||||||||
|
投稿日時: 2004-02-04 09:53
ほむらです。
----- あと、ソケット通信(or パイプ)という選択肢も忘れずに。。。 個人的にはこっちがお勧めです。 #EXE間の通信はSendMessage()で行うほうが簡単ですよ。 #FindWindow?とかでWindowハンドルって割と簡単に手に入りますから。 |