2 つの exe で構成されるアプリケーションがあります。MyApp.exe
それらを と と呼びましょうMyAppStarter.exe
。私が持っている理由は、利用可能MyAppStarter.exe
な新しいバージョンがあるかどうかを最初にネットワークでチェックして、MyApp.exe
開始する前にコピーできるようにするためです-しかし、それは今ではやや意味がありません.
私が達成したいのは、カスタム URL プロトコル ハンドラーを登録して、MyAppStarter.exe
何らかの開始条件を に渡すことができるようにすることMyApp.exe
です。たとえば、ユーザーが電子メール内のmyapp://userid=123へのリンクをクリックすると、アプリケーションが起動し、ユーザー ID が 123 のユーザーがすぐに表示されます。または、リンクがmyapp://accid=456の場合accid 456 のアカウントをすぐに表示する必要があります。カスタム URL プロトコル ハンドラーを登録してから、特定の引数を使用してMyAppStarter.exe
シェルを作成する方法を知っています。MyApp.exe
ここまでは順調ですね。
今の問題は、MyApp.exe
すでに実行されている必要があることです。それMyAppStarter.exe
を認識し (これは私が実行できます)、それにフォーカスを与え (これも実行できます)、指定された ID を持つユーザーまたはアカウントなどを表示するように指示します (これは私が立ち往生しているところです)。
How to Use Anonymous Pipes for Local Interprocess Communicationに関するMSDNのドキュメントを見てきました。単純明快に思えますが、不明な点が 2 つあります。
最初にパイプを確立できるように、2 つの間でパイプ ハンドルを通信するにはどうすればよいですか?
MyApp.exe
が実行された時点ですでに実行されている可能性があることに注意してくださいMyAppStarter.exe
。私のシナリオでは、それ
MyAppStarter.exe
がサーバーMyApp.exe
になり、クライアントになると思います。MyApp.exe
これは、 からの命令をパイプで頻繁にチェックするタイマーを設定する必要があることを意味しMyAppStarter.exe
ます。私はこの考えに腹を立てていません。この要件は、MyApp.exe
1秒ごとにタイマーを起動するための操作のごくわずかな部分であるということだけです。私はそれが好きだっMayApp.exe
たvoid PerformInstruction(string instruction)
.MyAppStarter.exe