2

我想打开 Google Chrome 标签或默认浏览器。然后在用户选择关闭它之后关闭它。

我在用

Process.Start("HTTP://www.MySite.Com");

打开浏览器,但我没有关闭它的句柄。我也不想关闭整个浏览器,只想关闭我打开的选项卡。

4

1 回答 1

5

这在 Firefox 中对我有用:

var proc = Process.Start("firefox.exe", "http://www.google.nl");
proc.Kill();

因为我将 Firefox 设置为单窗口模式,所以它会打开一个选项卡。当我发出 Kill() 方法时,此选项卡被终止(但不是主窗口)。在这种情况下, Close() 方法对我不起作用。

您可以尝试使用 Chrome 进行相同的操作。您必须将 URL 作为参数提供给实际程序,而不是 URL 本身,否则 proc 为空。

这是使用默认浏览器的完整示例:

        string browser = string.Empty;
        RegistryKey key = null;
        try
        {
            key = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\open\command");

            //trim off quotes
            if (key != null)
            {
                browser = key.GetValue(null).ToString().ToLower().Trim(new[] { '"' });
            }
            if (!browser.EndsWith("exe"))
            {
                //get rid of everything after the ".exe"
                browser = browser.Substring(0, browser.LastIndexOf(".exe", StringComparison.InvariantCultureIgnoreCase) + 4);
            }
        }
        finally
        {
            if (key != null)
            {
                key.Close();
            }
        }
        Process proc = Process.Start(browser, "http://www.google.nl");
        if (proc != null)
        {
            proc.Kill();
        }
于 2012-05-22T12:10:50.777 回答