DOBON.NET DOBON.NETプログラミング掲示板過去ログ

プロセス間通信について(古のDDEのように)

環境/言語:[XP/C#/.NET Framework1.1]
分類:[.NET]

はじめまして

C#にて、アプリが2重起動された場合に後から起動されたアプリの引数を先に起動されていたアプリに渡す方法を探しています。
ずっと昔であればDDEを使用して実現できていたのですが…

実現したいことは
・先に起動していたアプリのリストボックスに、後から起動したアプリのコマンドライン引数の文字列を登録
です。

どなたかよい方法を教えていただけないでしょうか…。
とりあえず.NETでは、アプリケーション間の通信の方法として、リモート処理という方法が用意されています。

リモート処理の概要
http://ja.gotdotnet.com/quickstart/howto/doc/Remoting/mainfeatures.aspx

.NET リモート処理の概要
http://www.microsoft.com/japan/msdn/library/ja/cpguide/html/cpconnetremotingoverview.asp
回答ありがとうございます。

教えていただいたリモート処理を使用すれば私がやりたいことは実現できそうです。

しかしリモート処理ではチャネルとしてTCPポートを最低一つ使用する必要があるみたいですね…。
.NETでは、アプリケーション間の通信を行う場合には同一のマシン内でもポートを使用しないといけないのでしょうか?
> しかしリモート処理ではチャネルとしてTCPポートを最低一つ使用する必要があるみたいですね…。
> .NETでは、アプリケーション間の通信を行う場合には同一のマシン内でもポートを使用しないといけないのでしょうか?

そうなるでしょうね。それが嫌なら、やはりDDEを使うか、SendMessageあたりを使うかということになりそうですね。

vbAcceleratorにSendMessageを使った例がありました。

vbAccelerator - Simple Interprocess Communications using WM_COPYDATA
http://www.vbaccelerator.com/home/NET/Code/Libraries/Windows_Messages/Simple_Interprocess_Communication/article.asp
> そうなるでしょうね。それが嫌なら、やはりDDEを使うか、SendMessageあたりを使うかということになりそうですね。
>
> vbAcceleratorにSendMessageを使った例がありました。
>
> vbAccelerator - Simple Interprocess Communications using WM_COPYDATA
> http://www.vbaccelerator.com/home/NET/Code/Libraries/Windows_Messages/Simple_Interprocess_Communication/article.asp

汎用性を求めるならTCPポートを使うのが確実なんでしょうね。
しかし引数渡すだけのためにTCPポートを使うのはちょっと抵抗があるので、SendMessageを使って試してみることにします。

ありがとうございました!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板