【问题标题】:Close all browser windows?关闭所有浏览器窗口?
【发布时间】:2012-07-21 19:01:37
【问题描述】:

我正在开发一个 C# 应用程序(自动机器人)来打开许多 Internet Explorer 窗口并同时访问不同的站点。

过去几乎每 10 秒打开一个窗口,所以几分钟后,我只有数百个窗口,这当然会大大降低我的电脑速度......

所以,我很想知道是否有某种方法可以直接从我的应用程序中关闭所有活动窗口,以便我可以每隔几分钟在线程或类似的东西中运行该代码。

提前致谢。

【问题讨论】:

  • 好吧,你可以找到并终止 iexplore 进程...
  • “活跃”是什么意思?通常只有一个活动窗口——具有焦点​​的窗口。所有这些窗口你都掌握了吗?
  • 只是一个问题:为什么要打开窗户?为什么不使用 WebClient?当窗口打开时,你真的在​​看输出吗?
  • 我讨厌听起来那么消极,但这很像恶意编程。
  • @SandyGifford 听起来他在给我做一个投票机器人或类似的东西。

标签: c# windows browser


【解决方案1】:

使用InternetExplorer 对象打开每个窗口和invoke the Quit method when done。这样做的额外好处是只关闭您打开的窗口(这样用户或其他应用程序打开的窗口不受影响)。

【讨论】:

    【解决方案2】:

    我建议使用像 WatiN 这样的库来执行自动化,这将允许您自动化任何主流浏览器(包括 IE)。

    使用 Watin,您可以像这样打开和关闭窗口(非常简单的示例):

    screen = new Screen("http://www.google.com")
    screen.ie.ForceClose();
    

    【讨论】:

    • 另一个需要考虑的包可能是 Selenium。
    【解决方案3】:

    正如@cdhowie 提到的,您可以循环浏览list of running processes,检查 iexplore 并在计时器内终止该进程。如果您想更深入地了解哪些网站正在被终止(也许您想创建一个日志以供以后使用),您可以在终止过程中retrieve website information

    【讨论】: