我有一个winforms应用程序,为什么有人点击我需要打开IE到特定URL的按钮。
当有人关闭winforms应用程序时,我需要关闭IE。
这可能吗?如果是,怎么样?
答案 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();
这只会杀死你开始的实例。