- PR -

DLL同士の通信

投稿者投稿内容
優希
ベテラン
会議室デビュー日: 2003/08/12
投稿数: 92
投稿日時: 2004-02-03 17:10
おばけさん、Jittaさん、
ご返信、ありがとうございます。

引用:

この製品を入れないと件のAPIは機能しないでしょう。


そ、そうなんですかー。

引用:

 System.Messaging.dll を参照するようにして、System.Messaging 名前空間をインポート(C++はusingだっけ?)すれば、使えませんか?


上記のようにやって、ビルドもできるんですけど・・・。
なんか動いていないみたいですねぇ。

もう少し、いじってみます (^^;)
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-03 17:20
引用:

優希さんの書き込み (2004-02-03 17:10) より:

引用:

この製品を入れないと件のAPIは機能しないでしょう。


そ、そうなんですかー。


 一応、MSDNのMessageQueueあたりを横目で見ているのですが、別のコンポーネントが必要、なんて書いていないんですよね。
 MessageQueueクラスの概要説明にあるサンプルをそのまま打ち込んだら、どうなりますか?
#本業が忙しくて、手が回らないのぉ〜
優希
ベテラン
会議室デビュー日: 2003/08/12
投稿数: 92
投稿日時: 2004-02-03 17:57
下記のサンプル
引用:

アプリケーション固有の "Order" というクラスを使用して、メッセージをキューに送信し、
キューからメッセージを受信する例を次に示します。


を実行して見たところ、SendMessage() の
コード:
// Send the Order to the queue.
myQueue->Send(sentOrder);


を終えてからエラーになります。

エラー内容は、以下のとおりです。
引用:

メッセージ キューは
このコンピュータにインストールされていません。




やはり、MSMQを入れないと、、、
ということなのでしょうか?
さらだ
会議室デビュー日: 2003/07/11
投稿数: 17
投稿日時: 2004-02-04 02:51
引用:

優希さんの書き込み (2004-02-03 17:57) より:
やはり、MSMQを入れないと、、、
ということなのでしょうか?



便乗で書き込みですが、私の場合DLLでなくC#で作ったEXEファイル同士で、データの
やりとりをどうやればよいのか悩んでいる所です。単純に文字列(ファイル名)を渡したい
だけなのですが、簡単な方法が見つからず、APIでSendMessageとWM_SETTEXT
を使って逃げようかと思っているところです。
探しているうち、.NET Remotingだのメッセージキューだのキーワードは見つけたの
ですが、どちらかというとネットワーク上でのサーバとのやりとり・他端末とのやりとりの
内容が多く、私にはちょっと敷居が高く、適当なサンプルも見つけることができません
でした。
もうちょっと手頃な方法がなにかあればいいのですが...

メッセージキューは私も少し試してみたのですが、同じエラーがでました。ヘルプを
見ると、なにかインストールしないとダメみたいですね。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-04 08:32
 やっと記述を見つけました。こんなのわかんないよ。。。

 う〜ん、インストールの方法が書いてないように思いますね。これって製品の1つ?



 C++なんですよね?プラットフォームSDKの、「メモリマップファイル」(MapViewOfFile)を使うとか。メッセージキューが利用しているAPIのようです。「共有メモリファイル」(CShareFile MFC)というのもあります。

MSDN検索キー "メモリ" NEAR "ファイル" NEAR "マップ"

#余計に混乱させたらごめんなさい
優希
ベテラン
会議室デビュー日: 2003/08/12
投稿数: 92
投稿日時: 2004-02-04 09:23
さらださん、Jittaさん、
ご返信、ありがとうございます。


引用:

APIでSendMessageとWM_SETTEXT
を使って逃げようかと思っているところです。


そうですかぁ。SendMessageというものがあるんですねぇ。
メッセージキューと同様にできるというものなのでしょうか!?

メッセージキューもいろいろ試してみたのですが、
やはりうまく動かないです・・・(^^;)


引用:

C++なんですよね?
プラットフォームSDKの、
「メモリマップファイル」(MapViewOfFile)を使うとか。
メッセージキューが利用しているAPIのようです。
「共有メモリファイル」(CShareFile MFC)というのもあります。


ええ、C++です。
いろいろあるのですねぇ!

SendMessageやメモリマップファイル、共有メモリファイルの
概要を少し読んでみて、容易にできそうなものを選んで
やってみたいと思います。
(・・・分かるかな(笑))

また、何かお気づきの点がありましたら、
書込みのほど、宜しくお願い致します。

なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-02-04 09:47
引用:

さらださんの書き込み (2004-02-04 02:51) より:
簡単な方法が見つからず、APIでSendMessageとWM_SETTEXT
を使って逃げようかと思っているところです。


ウィンドウメッセージって、自分で定義したメッセージも投げられませんでしたっけ?
どうやるのだったか、何か定義がいるのだったか私は全然知らないんですが。

この方法がいいやり方なのかは分かりません。
リモーティングは、他プロセス間ではネットワークを使ったチャネルしか用意はされていなかったような気がするので、同一ホストのEXE間ではちょっとと思うかもしれないですね。
ネットワークを介するのであれば比較的簡単に実現できると思います(この用途では若干大げさな気はしますが)。

あるいは、メモリマップファイルとか、その他プロセス貫通信用の機能を使ったチャネルを誰かが作ってるかもしれない…他力本願
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2004-02-04 09:53
ほむらです。
-----
あと、ソケット通信(or パイプ)という選択肢も忘れずに。。。
個人的にはこっちがお勧めです。

#EXE間の通信はSendMessage()で行うほうが簡単ですよ。
#FindWindow?とかでWindowハンドルって割と簡単に手に入りますから。

スキルアップ/キャリアアップ(JOB@IT)