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

从winforms启动IE,我可以在winforms关闭时关闭IE吗?,winforms,internet-explorer,Winforms,Internet Explorer,我有一个winforms应用程序,这就是为什么有人点击我需要打开IE到特定URL的按钮 当有人关闭winforms应用程序时,我需要关闭IE 这可能吗?如果是,怎么做?这样做是可能的,但最好使用WebBrowser控件将Internet Explorer嵌入到应用程序中。这样,当您关闭网站时,当您的网站在现有IE窗口的新选项卡中打开时,您就没有机会关闭整个窗口 编辑:如果您打算这样做,请查看,这样做是可能的,但最好使用WebBrowser控件将Internet Explorer嵌入到您的应用程序

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

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


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

这样做是可能的,但最好使用WebBrowser控件将Internet Explorer嵌入到应用程序中。这样,当您关闭网站时,当您的网站在现有IE窗口的新选项卡中打开时,您就没有机会关闭整个窗口


编辑:如果您打算这样做,请查看

,这样做是可能的,但最好使用WebBrowser控件将Internet Explorer嵌入到您的应用程序中。这样,当您关闭网站时,当您的网站在现有IE窗口的新选项卡中打开时,您就没有机会关闭整个窗口


编辑:如果您仍要执行此操作,请查看

不确定如何启动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)

不确定如何启动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)
是的,这是可能的

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

但是,正如Dan Walker所提到的,最好只使用Web浏览器控件,除非您有特定的导航需求,否则只启动并关闭IE可能更有效。

是的,这是可能的

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


但是,正如Dan Walker所提到的,最好只使用Web浏览器控件,除非您有特定的导航需求,否则只启动并关闭IE可能更有效。

如果您没有用于启动IE的旧流程的参考,您必须搜索System.Diagnostics.process.GetProcessesByNameIEXPLORE返回的进程数组并终止特定进程


一些示例。

如果您没有用于启动IE的旧进程的引用,则必须搜索System.Diagnostics.process.GetProcessesByNameIEXPLORE返回的进程数组并终止特定进程


一些示例。

假设您使用的是.NET,请尝试使用WinForms

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

// Do work, etc

ieProcess.Kill();

这只会终止您启动的实例。

假设您使用的是.NET WinForms,请尝试此操作

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

// Do work, etc

ieProcess.Kill();

这只会杀死您启动的实例。

是的,关闭浏览器似乎是一种奇怪的用户体验,尤其是在其他选项卡打开的情况下。是的,关闭浏览器似乎是一种奇怪的用户体验,尤其是在其他选项卡打开的情况下。如果您使用IE8,每个选项卡都作为一个单独的过程,这将起作用,但在IE7中,每个窗口都是一个新的进程,当你无法控制所有打开的选项卡时,关闭整个InternetExplorer窗口不是一个好主意。这一点很好。我想我是在看我需要关闭IE一点。如果你使用IE8,每个标签都是一个单独的进程,那就行了。但是对于IE7,每个窗口都是一个新的进程,当你无法控制所有打开的标签时,关闭整个Internet Explorer窗口不是一个好主意。非常好的观点。我想我是在看,然后我需要关闭一点。