【问题标题】:Open a new window of Google Chrome from C#从 C# 打开一个新的谷歌浏览器窗口
【发布时间】:2017-04-13 02:23:09
【问题描述】:

是否可以从 C# 打开一个新的 实例 Chrome?

instance是指一个新的单独选项卡,不包含在现有的 chrome 窗口中。

我尝试了以下解决方案,但 两者现有 chrome 窗口中创建了一个 新标签,如果没有,则创建一个实例一个存在:

Process.Start(@"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", "www.google.com");

Process.Start("chrome.exe", "www.google.com");

我想始终创建一个单独的窗口,即使有现有的 Chrome 窗口。

明确地说,最后我想要这样的东西(当我将鼠标悬停在任务栏中的 chrome 图标上时):

不是这样的:

我到处搜索,但没有找到明确的答案来说明这是否可能来自 C#。

谢谢。

【问题讨论】:

  • Google chrome 将始终创建新实例并将所有内容置于选项卡下。这里有什么问题?
  • 我更新了您的问题,以避免让正在寻找一种方法来实际创建全新且独立的浏览器实例的人们感到困惑和失望。

标签: c# google-chrome process


【解决方案1】:

您可以通过将--new-window 参数传递给进程来实现

x86

Process process = new Process();
process.StartInfo.FileName = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
process.StartInfo.Arguments = "google.com" + " --new-window";
process.Start();

x64

Process process = new Process();
process.StartInfo.FileName = @"C:\Program Files\Google\Chrome\Application\chrome.exe";
process.StartInfo.Arguments = "google.com" + " --new-window";
process.Start();

【讨论】:

  • 是的。只是添加这个作为澄清:从技术上讲,这并没有真正给你一个新的“实例”,因为窗口仍然由同一个 Chrome 父进程管理并在同一个浏览器会话中运行(即使用相同的配置文件)。但它会导致 OP 所需的行为。
【解决方案2】:

短版,先找chrome再找firefox(语法不同)

strURL="http://myurl.com";
try
{
    //Launch Chrome in a new window
    System.Diagnostics.Process.Start("chrome", strURL+" --new-window");             
}
catch
{
    try
    { 
        //Chrome not found ... launch Firefox in a new window
        System.Diagnostics.Process.Start("firefox", "-new-window "+ strURL);
    }
    catch
    {
        //WARN THE USER TO INSTALL A BROWSER...
    }
}           

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    相关资源
    最近更新 更多