我有开始使用Internet Explorer WPF应用程序(第9版,Win7上X64) Process.Start
方法。
我保存的ProcessID以关闭它,当应用程序被关闭。 但是,应用程序退出时,Internet Explorer的仍然是在任务管理器中可见。
下面是我使用的代码:
public class MyClass : IDisposable
{
Process _process;
public void Go()
{
ProcessStartInfo psi = new ProcessStartInfo {
FileName = "iexplore.exe",
Arguments = "-noframemerging -private \"http://whathaveyoutried.com\""
};
_process = Process.Start(psi);
_process.WaitForInputIdle();
}
private void Close(object sender, RoutedEventArgs e)
{
if (_process != null)
{
_process.Refresh();
_process.Close();
}
}
public void Dispose()
{
if (_process != null)
{
_process.Refresh();
_process.Close();
}
}
}
}
我仔细检查了,调用_process.Close()
实际完成的。
什么会导致这种行为?
PS:我怀疑这是由于Internet Explorer的内部。 运行exe将没有必要创建新的进程,但可以使用一些IPC控制其他实例。 我用的是-noframemerging
命令行参数,但它看起来并不解决问题。
[编辑]这是另一种延续问题,我问前几天 。 事实上,我Pinvoking SetParent函数embbed衍生的IE浏览器在我的应用程序。 我不能使用WebBrowser控件,因为它不支持我要找的隔离。 因此,它是确定关闭IE浏览器时,我的应用程序关闭。