あなたの質問ではあまり明確ではありませんが、別のプロセスによって開始されたプロセスを監視したいと考えています。つまり、それらに使用しても意味がありませんProcess.Start()
。
Process.GetProcessByName()
アプリケーション名に基づいて実行中のプロセスのリストを取得するために使用できます。
それができたら、Exited
イベントを使用してプロセスがいつ終了するかを調べることができます ( も設定する必要がありますEnableRaisingEvents
)。例えば:
var processes = Process.GetProcessesByName(processName);
foreach (var process in processes)
{
Console.WriteLine("{0} running.", process);
process.Exited += (sender, e) => Console.WriteLine("{0} exited.", sender);
process.EnableRaisingEvents = true;
}
競合状態があることに注意してください。呼び出しの後、GetProcessesByName()
イベント ハンドラーを設定する前にプロセスが終了した場合、Exited
イベントが発生しない可能性があります。
もう 1 つの問題は、アプリケーションがいつ開始されたかを把握する方法です。新しく開始されたプロセスを監視できるようにするものは何も知らないので、GetProcessesByName()
期待する答えが得られるまで、 を繰り返し呼び出す必要があると思います。