- - PR -
アプリケーション間の通信
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-03-03 18:36
皆様こんにちは。
アプリケーション間での値の受け渡しが出来るのかを お教えください。また、方法もお教え頂ければ幸いです。 開発言語はC#です。 「A.exe」と「B.exe」というアプリがあるとします。 両方とも常に起動している状態とします。 「A.exe」は「B.exe」へ、日時や数値などの値を渡します。 「B.exe」を複数起動せずに常に「A.exe」より値を受けつづける 事は可能でしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2005-03-03 20:07
ソケット通信すればできる。
#もっと簡単な方法があるかもしれない A.exeがクライアント B.exeがサーバーかな? | ||||
|
投稿日時: 2005-03-03 20:37
Windowsはあまり詳しくないので他に良い方法があるかもしれませんが。。。
UNIXだとそういったプロセス間通信(IPC)の手段としてメッセージキュー、共有メモリ、セマフォといった手段があります。 Windowsの場合、キューはMSMQがそれにあたると思います(メッセージキューよりかなり高機能ですが)。共有メモリ、セマフォに該当するものはすみません。知りません。 あとは簡易的に実現するのであれば環境変数で渡すという手もあると思います。 | ||||
|
投稿日時: 2005-03-03 21:14
Windowsにも上記に対応する手段は用意されています。呼称は多少違っていて、Pipe、Mail Slot、Memory Mapped File、Semaphore、Mutex、Event、Windows Message等など。その多くは.NetFrameworkではサポートされていないので、APIを直接呼び出す必要がありますが・・・。 MutexやEventは.NetFrameworkからも使えますね。 | ||||
|
投稿日時: 2005-03-03 22:56
.NET が標準で提供する方法は「リモーティング」です。 ですが、少量のデータを断続的に、一方的に送りつけるだけなら、Windows メッセージを使うのが簡単かもしれません。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2005-03-05 13:33
皆様ありがとうございます。
お礼が遅くなり申し訳ありません。 Windowsメッセージを利用するのが簡単とお教え頂いた のでWindowsメッセージで実現したいと考えておりますが、 送信されたメッセージの受信方法について分からない事が ありますのでお教えください。 常にメッセージを受信待ち状態にしておき、受信し続ける様に 行いたいのですが、どのようにすればよろしいでしょうか? 以下が現状のソースの抜粋となります。 public System.Messaging.MessageQueue myQueue; myQueue = new System.Messaging.MessageQueue(@".\Private$\MyQueue"); myQueue.Formatter = new XmlMessageFormatter(new Type[] {typeof(String)}); myMessage = myQueue.Receive(new TimeSpan(0,0,3)); myOrder = (String)myMessage.Body; よろしくお願いいたします。 | ||||
|
投稿日時: 2005-03-05 14:54
それはメッセージキューです。 Windows メッセージとはまったく違うものです。 .NET Framework は Windows メッセージに対するサポートをほとんど持っていません。 「Windows メッセージ」を扱うには、Windows SDK レベルの知識が必要になります。 Windows メッセージの受信は Form.WndProc をオーバーライドすれば十分ですが、Windows メッセージの送信には SendMessage() API を P/Invoke する必要があります。 Windows メッセージによる少量の断続低なデータ送信には、Windows SDK で定義されている WM_COPYDATA メッセージを利用するのがよいでしょう。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||
|
投稿日時: 2005-03-05 15:18
そうなんですか!お恥ずかしいです。
今まで、WindowsSDKを利用した事ないので WindowsSDKについてから調べてみます。。。 |
1