使用Process.Start,我正在启动各种IE8和Firefox(3.5)进程,我保留了一个Process实例。
稍后在应用程序中,我将使用Process实例的MainWindowHandle属性来定位窗口,以便通过P / Invoke使用某些平台API函数。
然而,IE8和Firefox都会杀死我启动的第二个进程,然后使用第一个重启它。这意味着我的Process实例现在引用一个已关闭的进程,因此HasExited为true且MainWindowHandle等于IntPtr.Zero。
这是一个发生了什么的例子(我在这个例子中使用的是IE8):
我理解为什么这些浏览器会以这种方式运行,但如果我想稍后控制创建的进程,它确实给我带来了问题。
以前有人遇到过这个问题吗?您如何建议获得对该过程的引用?我想过使用GetProcessesByName并迭代它们的窗口标题,但不幸的是标题可能与第一个启动的进程相同。
注意: IE8是第一个使用进程分离的IE版本,因此只有IE8才有这种方式,我对IE7没有这个问题,不幸的是我也需要IE8支持。< / p>