【问题标题】:How to safely close Google Chrome programmatically如何以编程方式安全关闭 Google Chrome
【发布时间】:2013-01-06 22:23:20
【问题描述】:

如何通过 C# 安全地关闭谷歌浏览器?我可以杀死 chrome 进程,但在这种情况下,Google Chrome 会在下次运行时报告 appcrash。

【问题讨论】:

  • 获取 Chrome 窗口的句柄并向每个窗口发送 WM_CLOSEstackoverflow.com/questions/1129204/how-to-use-wm-close-in-c
  • 我只是好奇...默认情况下谷歌浏览器或任何其他浏览器会提醒我应用程序正在尝试关闭浏览器?作为用户思考,我认为这是一个非常烦人的过程。大多数时候我打开了很多标签,我只是不想关闭所有东西。由于每个标签都有自己的进程,关闭特定标签而不是整个浏览器不是更好吗?
  • @Guilherme 我需要关闭浏览器,因为我需要修改 SQLite Chrome 数据库(设置我的默认搜索提供程序)。
  • 我不知道我们可以操作 Chrome 数据库。既然您说关闭浏览器是有意义的。

标签: c# .net google-chrome


【解决方案1】:

你可以使用鲜为人知的UI Automation API,像这样:

static void CloseAllChromeBrowsers()
{
    foreach (Process process in Process.GetProcessesByName("chrome"))
    {
        if (process.MainWindowHandle == IntPtr.Zero) // some have no UI
            continue;

        AutomationElement element = AutomationElement.FromHandle(process.MainWindowHandle);
        if (element != null)
        {
            ((WindowPattern)element.GetCurrentPattern(WindowPattern.Pattern)).Close();
        }
    }
}

【讨论】:

  • 看起来不错,但我 .net 2.0 兼容的解决方案
  • 你应该在问题中说明那个
  • 不幸的是,如果您打开了多个 chrome 窗口,这不会关闭第一个。
  • 对我来说效果很好!!谢谢西蒙。所需的命名空间:使用 System.Diagnostics,使用 System.Windows.Automation
  • 我不得不参考 UIAutomationClient 和 UIAutomationTypes。
【解决方案2】:

您可以尝试使用Process 类确定窗口句柄并向窗口发送WM_CLOSE 消息。

【讨论】:

    猜你喜欢
    • 2022-10-14
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2011-07-15
    • 2015-11-26
    相关资源
    最近更新 更多