使用process.start,我正在启动各种ie8和firefox(3.5)进程,我为它们保留了一个进程实例。
稍后在应用程序中,我将使用流程实例的mainwindowhandle属性将窗口作为目标,以便通过p/invoke与某些平台a p i函数一起使用。
然而,ie8和firefox都会杀死
第二
进程i启动,然后使用第一个重新启动它。这意味着我的流程实例现在引用一个关闭的流程,因此hasexited为true,mainwindowhandle等于intptr.zero。
下面是一个发生了什么的示例(我在这个示例中使用ie8):
-
用“iexplore.exe”调用process.start
-
进程启动并继续运行
-
使用“iexplore.exe”再次调用process.start
-
第一个进程继续运行,但第二个进程立即被终止
-
另一个iexplore进程启动(可能是由第一个iexplore进程启动)。
-
在此期间,只有在第二个进程被终止并重新启动后,用户才能看到第二个ie窗口。
我理解这些浏览器为什么会这样,但如果我想以后控制创建的进程,它确实会给我带来问题。
以前有人遇到过这个问题吗?您建议如何获取对流程的引用?我考虑过使用getprocessesbyname并遍历它们的窗口标题,但不幸的是,标题可能与启动的第一个进程相同。
注:
ie8是ie使用进程分离的第一个版本,所以只有ie8这样做,ie7没有这个问题,不幸的是我也需要ie8支持。