当使用.NET的Process.Start运行IE8的iexplore.exe时,如果你已经打开了另一个IE8窗口,那么刚启动的iexplore.exe进程将立即退出,其子进程将附加到main IE8进程。结果是你的Process对象将链接到已经退出的“调用者”进程,而不是正在运行的子进程。您要对Process对象执行的任何操作都将导致InvalidOperationException,告诉您该进程已退出。
如何获取链接到实际子IE8进程的Process对象?
答案 0 :(得分:4)
作为一种解决方法,您可能希望强制IE启动一个新实例(传递-nomerge
命令行参数):
Process objProcess = Process.Start("IEXPLORE.EXE", "-nomerge http://google.com/");
答案 1 :(得分:1)
我使用非最佳解决方案 - 在运行我的iexplore.exe之前获取所有iexplore.exe进程ID的列表,然后在调用iexplore.exe后再次获取相同的列表。在两个列表之间做差异,额外的PID将是我创建的。这当然在某些情况下不起作用(其他应用程序或用户在检测代码运行时启动了额外的iexplore.exe进程,或IE作为内部维护任务进行某种重新排列/重新创建过程)。