如何使用 C# 启动具有特定 URL 的 Google Chrome 选项卡

Posted

技术标签:

【中文标题】如何使用 C# 启动具有特定 URL 的 Google Chrome 选项卡【英文标题】:How to launch a Google Chrome Tab with specific URL using C# 【发布时间】:2011-09-12 10:04:47 【问题描述】:

有没有一种方法可以在 Google Chrome 中启动一个标签(不是新窗口),并从自定义应用程序加载特定的 URL?我的应用程序是用 C# (.NET 4 Full) 编码的。

我正在通过 C# 中的 SOAP 执行一些操作,一旦成功完成,我希望通过浏览器向用户呈现最终结果。

整个设置是针对我们的内部网络的,而不是供公众使用的——因此,我只能针对特定的浏览器。由于各种原因,我只针对Chrome

【问题讨论】:

【参考方案1】:

更新:请参阅 Dylan 或 d.c 的解决方案以获得更简单(更稳定)的解决方案,该解决方案不依赖于 LocalAppData 中安装的 Chrome 蜜蜂!


即使我同意 Daniel Hilgarth 在 chrome 中打开一个新选项卡,您也只需使用您的 URL 作为参数执行 chrome.exe:

Process.Start(@"%AppData%\..\Local\Google\Chrome\Application\chrome.exe", 
              "http:\\www.YourUrl.com");

【讨论】:

问题:如果 Chrome 的现有实例已经在执行,并且(如果是)该页面将在新选项卡中打开而不是新窗口,这是否保证将使用现有的 Chrome 实例? 我不能保证(可能会在 Chome 设置中搜索这样的设置),但我对其进行了测试,它使用了现有的 Chrome 实例... 请参阅问题以了解为什么使用 Chrome,为什么不使用其他浏览器。 @Mike Hofer:是的。几乎可以保证 Chrome 存在于所有系统上,尤其是对于那些使用 SugarCRM 的用户。 @chrfin:谢谢!让我试一试,然后回复你。 您也可以使用 '%localappdata%' 而不是从 Roaming 跳转到 windows 7 和 8(可能更新) 我在C:\Program Files (x86)\Google\Chrome\Application下找到了我的【参考方案2】:

作为对chrfin's 响应的简化,由于 Chrome 应该在运行路径上(如果已安装),您只需调用:

Process.Start("chrome.exe", "http://www.YourUrl.com");

这对我来说似乎按预期工作,如果 Chrome 已经打开,则打开一个新标签。

【讨论】:

抱歉,我刚刚使用了错误的术语,但它确实有效。刚刚检查了一下,它不在 PATH 上,但它肯定在运行路径上(无论实际使用什么) - 如果您打开“运行”提示并运行 chrome.exe "http:\\www.YourUrl.com",它的行为似乎与 C# 相同。 有没有办法知道 Chrome 是否也使用 C# 以编程方式完成了加载此 URL(不再忙)?类似于this,但不是使用 VBA,而是使用 C#。【参考方案3】:
// open in default browser
Process.Start("http://www.***.net");

// open in Internet Explorer
Process.Start("iexplore", @"http://www.***.net/");

// open in Firefox
Process.Start("firefox", @"http://www.***.net/");

// open in Google Chrome
Process.Start("chrome", @"http://www.***.net/");

【讨论】:

对我来说,它不适用于 winforms 应用程序中的 .NET Core 3.0。相反,我必须使用Process process = new Process(); process.StartInfo.UseShellExecute = true; process.StartInfo.FileName = "chrome"; process.StartInfo.Arguments = @"http://www.***.net/"; process.Start(); Edge 也有点不同:***.com/a/39626953/685404【参考方案4】:

如果用户没有 Chrome,它会抛出如下异常:

    //chrome.exe http://xxx.xxx.xxx --incognito
    //chrome.exe http://xxx.xxx.xxx -incognito
    //chrome.exe --incognito http://xxx.xxx.xxx
    //chrome.exe -incognito http://xxx.xxx.xxx
    private static void Chrome(string link)
    
        string url = "";

        if (!string.IsNullOrEmpty(link)) //if empty just run the browser
        
            if (link.Contains('.')) //check if it's an url or a google search
            
                url = link;
            
            else
            
                url = "https://www.google.com/search?q=" + link.Replace(" ", "+");
            
        

        try
        
            Process.Start("chrome.exe", url + " --incognito");
        
        catch (System.ComponentModel.Win32Exception e)
        
            MessageBox.Show("Unable to find Google Chrome...",
                "chrome.exe not found!", MessageBoxButtons.OK, MessageBoxIcon.Error);
        
    

【讨论】:

以上是关于如何使用 C# 启动具有特定 URL 的 Google Chrome 选项卡的主要内容,如果未能解决你的问题,请参考以下文章

如何使用脚本启动具有特定工作目录的 Git Bash 窗口?

如何检查 NSString 是不是具有具有特定地址的 URL

C# 使用登录的用户凭据启动进程

解析具有可读性的新闻 URL

如何在URL中搜索具有特定类别的项目

如何启动具有特定访问权限的子进程