フォームごとに1つの個別のプロセスで実行されるテキストエディタアプリケーションがあるとします。アプリケーションは単一のドキュメントです(つまり、タブやMDIはありません)。
A.txt、B.txt、C.txtの3つのドキュメントで開いている3つのフォームがあります。これで、ユーザーはデスクトップ上のB.txtファイルをダブルクリックします。これにより、問題のアプリケーションの新しいインスタンスが開始されます。この起動されたエディターのインスタンスは終了し、このファイルがロードされている既に実行中のプロセスの前にフォーカス/移動する必要があります。これにより、ユーザーは2つの別々のフォームで同じドキュメントをロードすることになりません。
どうすればこれを最も簡単に達成できますか?つまり、どのプロセスがすでにドキュメントを表示しているかをどのように見つけることができますか?
一度開いたアプリケーションはファイルを開いたままにしないので、プロセスのファイルハンドルを列挙してプロセスを見つけることに頼ることはできません。これには、プロセス間の何らかの形のコミュニケーションが必要だと思います。理想的には.NETソリューションを探していますが、問題は実際にはWindows関連/言語に依存しないことです。
編集:さまざまな理由で、すべてのフォームを単一のプロセスで実行するのではなく、別々のプロセスを使用しようとしていることに言及する必要があります。