从winforms启动IE,我可以在winforms关闭时关闭IE吗?

时间:2008-10-24 19:03:01

标签: winforms internet-explorer

我有一个winforms应用程序,为什么有人点击我需要打开IE到特定URL的按钮。

当有人关闭winforms应用程序时,我需要关闭IE。

这可能吗?如果是,怎么样?

5 个答案:

答案 0 :(得分:3)

如果您没有引用用于启动IE的旧进程,则必须搜索System.Diagnostics.Process.GetProcessesByName(“IEXPLORE”)返回的进程数组并终止特定进程。

一些样本here

答案 1 :(得分:1)

可以这样做,但是使用WebBrowser控件将Internet Explorer简单地嵌入到您的应用程序中可能是个更好的主意。这样当您关闭网站时,当您的网站在现有IE窗口的新标签页中打开时,您就无法关闭整个窗口。

修改:如果您打算这样做,请查看MSDN page on System.Diagnostics.Process.Close

答案 2 :(得分:1)

是的,有可能,

当您调用System.Diagnostics.Process.Start()以启动浏览器时,请使用专门创建的过程对象。您可以稍后使用流程信息来终止流程。

然而,正如Dan Walker所说,除非你有特定的导航需求,否则使用Web浏览器控件可能更好一点,那么启动和杀死IE可能会更有效。

答案 3 :(得分:0)

不确定如何启动IE,但如果您保留对已启动进程(或创建的窗口句柄)的引用,则可以在应用程序退出时终止进程(或关闭窗口)。

编辑:

关闭窗口句柄的代码就像

Utilities.Utilities.SendMessage(mTestPanelHandle, WM_COMMAND, WM_CLOSE, 0);

如果您有P / Invoke

public const int WM_COMMAND = 0x0112;
public const int WM_CLOSE = 0xF060;
[DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true,
        CallingConvention = CallingConvention.StdCall)]
public static extern int SendMessage(IntPtr hwnd, uint Msg, int wParam, int lParam)

答案 4 :(得分:0)

试试这个(假设你使用的是WinForms)

Process ieProcess = Process.Start("iexplore", @"http://www.website.com");

// Do work, etc

ieProcess.Kill();

这只会杀死你开始的实例。