gpt4 book ai didi

c# - 使用 Process.Start 运行时如何关闭 Internet Explorer?

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:17 25 4
gpt4 key购买 nike

我有一个 WPF 应用程序正在使用 Process.Start 方法启动 Internet Explorer(版本 9,在 Win7 X64 上)。

我保存 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 命令行参数,但它看起来并不能解决问题。

[编辑] 这是另一个 question I asked few days ago 的延续.实际上,我正在调用 SetParent 函数以将生成的 IE 嵌入到我的应用程序中。我无法使用 WebBrowser 控件,因为它不支持我正在寻找的隔离。所以当我的应用程序关闭时关闭 IE 是可以的。

最佳答案

Internet Explorer 的每个选项卡都是一个进程。如果您打开带有多个选项卡的 IE 或用户打开另一个选项卡,则不足以终止进程。

但是

_process.Close();

释放属于_process 的所有资源。您可以使用 _process.Kill() 方法代替它。

关于c# - 使用 Process.Start 运行时如何关闭 Internet Explorer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11346533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com