2011-08-03 8 views
0

私はvb.netプログラミングで初めてですので、私に同行してください。私は、ターミナルサーバー環境で以下を実行しようとしています...アプリを他の実行中のアプリケーションとやりとりさせる最善の方法

私が作成したアプリケーションを起動します。このアプリは、WebブラウザコントロールでWebサイトを開き、Webサイトにユーザーをログインさせ、結果のWebページからのリンクを解析します。これらのリンクは、別のファームでCitrixセッションを開始するためのリンクです。

ログインしたユーザーのスタートメニューに表示される別のアプリを作成します。ユーザーがこのアプリをクリックすると、起動アプリと通信し、基本的にWebブラウザコントロール内のCitrixアプリに関連付けられたhrefをクリックします。その後、このアプリは消えてしまいます...

私はすでに最初のアプリをコーディングしており、ウェブブラウザコントロール内のリンクをクリックする方法を知りました。私が理解できないことは、別のアプリとして実行する2番目のアプリを実装する方法ですが、そのビジネスを行うために最初のアプリと通信することです。私は、MFC、AppDomains、RPCなどの多数のオプションを参照しています。私の質問は、あるアプリケーションを他のアプリケーションとやり取りさせ、他のアプリがその対話に基づいて行動を取るようにするベストプラクティスですか?私は完全にvb.netに固執することを好む。

私はこれがうまくいくように、Webブラウザ(IE、FFなど)はデスクトップ上で開いていて、電子メール内のリンクをクリックし、実行中のブラウザでリンクが開きます。メールクライアントのアクションにより、ブラウザでアクションが発生します。

+0

私はWCFをお勧めします。 http://msdn.microsoft.com/en-us/library/ms735119(v=vs.90).aspx –

答えて

0

2つのアプリケーションが通信できるようにするには、サービス(呼び出し可能なアプリケーション提供操作)が着信要求をリッスンできるようにするためのプロセス間通信メカニズムが必要です。露出した操作を呼び出します。

これは、Windows Communication Foundation(WCF)を使用して、2番目のアプリケーションが呼び出すことができる最初のアプリケーションからサービスを公開することです。

私はMagic8BallService sample appをCodeplexで調べることをお勧めします。それはC#で書かれていますが、それはかなりシンプルで、あなたが探しているものを作成するために必要な理解をほとんど提供するはずです。

HTH。

+0

WCFに関する私の懸念は、待ち時間とセキュリティです。 100人のユーザーは、同じマシン上で自分のセッションでこれらのアプリケーションを使用します。名前付きパイプは有望ですが、あるユーザーが別のユーザーの名前付きパイプと通信するのを防ぐために、各名前付きパイプをユーザーのセッションに対して一意にする必要はありませんか? – BadPenguin

1

私がいることを見つけますMy.Application.StartupNextInstanceイベントを使用して私のneを満たす完全にeds。複数のアプリを使用する代わりに、同じアプリを使用します。重複したインスタンスが実行されるたびに、コマンドライン引数が最初のインスタンスに渡されます。

しかし、上記の回答をいただいた皆様にとっては、StartupNextInstanceイベントがWCFを使用して渡していると思います。フレームワークを介して単一インスタンスのアプリケーションを使用することで、前後のすべてを手作業でコーディングする必要はありません。

関連する問題