再利用されたプロセスのハンドル


まうす  2013-09-10 14:52:38  No: 148222  IP: [192.*.*.*]

Process.Start(ProcessStartInfo)

再利用された場合のプロセスのハンドルが取得出来ますか?

編集 削除
魔界の仮面弁士  2013-09-17 22:05:39  No: 148223  IP: [192.*.*.*]

再利用されたということは、既存のプロセスが存在するわけですから、
  Dim p As Process = Process.Start(psi)
  If p Is Nothing Then
    '再利用された
  End If
あるいは
  Dim p As New Process()
  p.StartInfo = psi
  If Not p.Start() Then
    '再利用された
  End If
などのタイミングで、Process.GetProcessesByName や .GetProcesses から
検索してみてはいかがでしょうか。


ただし、既存のプロセスが複数ある場合、それらをどのように
特定していくのかは、それぞれのアプリケーションによって
異なってくるかと思います。

たとえば Internet Explorer なら、ShellWindows コレクションを
列挙した上で、LocationUrl や Document プロパティなどから判断するとか、
Excel であれば、IRunningObjectTable からインスタンスを拾ってきて
Workbook の FullName プロパティで判断するとか。

編集 削除