如何从我的C#程序中关闭所有打开的窗口?

时间:2010-07-29 13:47:50

标签: c# interop

您好我有一个Windows应用程序,我显示一个webbrowser,我有一个按钮,删除浏览器(它的预览),并转到我的应用程序中的另一个“视图”(另一个选项卡)。我的问题是我的用户越来越先进,他们用链接构建HTML(并且没问题)但链接可能会产生新的浏览器窗口(IExplorer),我的按钮需要关闭这些窗口,但是如何?

我已经制作了一些代码来遍历以“Windows Internet Explorer”结尾的所有eht窗口,这一切似乎都有效 - 但我如何关闭它们?我想这样做:

SendMessage((int)hWnd, WM_SYSCOMMAND, SC_CLOSE, 0);

它似乎有效,但浏览器会弹出一个对话框,询问我是否要关闭所有标签的标签...如何解决/解决此问题?

干杯,

1 个答案:

答案 0 :(得分:1)

  1. 走遍所有顶级iE窗口并关闭它们是一个坏主意,除非你保证用户无法启动ie并自己浏览互联网。否则,您实际上可能会丢失用户数据(例如用户在过去半小时内处理的电子邮件或博客文章)

  2. 如果不修改每用户IE设置,则无法轻松解决该对话框。您的另一个选择是查找该对话框并单击是按钮,但这将是脆弱的,如果用户升级到IE9,则无法保证继续工作。

  3. 您可以通过收听BeforeNavigate事件并仅允许保证在您的控件中发生的导航来阻止在新窗口中打开链接。但是,有些情况下IE可能仍然决定打开新窗口。