2016-07-12 16 views
2

子アプリの複数のインスタンスを実行する親アプリがあります。 プロセスが実行されている場合、これらの各プロセスに対して「開始」ボタンを無効にしたいと考えています。C#同じ名前のプロセスセットのメンバーを特定するにはどうすればよいですか?

アプリケーションの実行中のインスタンスのリストを取得するのは簡単です(Process.GetProcessesByName( "Bob")) - 私ができる必要があるのは、返されたプロセス(同じ名前のすべて)実行中のインスタンスを識別します。

インスタンスにはClientIdという名前のパブリック変数があります。どのインスタンスが実行されているかを見るためにプロセスのClientIdを読むにはどうすればよいですか?

良いアプローチがありますか?

+2

親アプリが子を産んでいる場合は、ClientIdデンティファイアで辞書に登録する際にPIDを保存するなど、自分自身で管理する必要があると思います。その後、[GetProcessById() '](https://msdn.microsoft.com/en-us/library/system.diagnostics.process.getprocessbyid(v = vs.110).aspx)を実行すると、辞書からそれはどちらですか。それ以外の場合、[プロセス間通信](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365574(v = vs.85).aspx)が必要です。 – Quantic

答えて

1

あなたはProcess.Start(fileName)でプロセスを起動している場合は、プロセスオブジェクトを格納することができますが返さ:

Process myProcess = Process.Start(fileName); 

プロセスは、あなたがチェックすることができHasExited性質を持っています。

関連する問題