【问题标题】:How to open two separate (default) browser windows instead of new tabs如何打开两个单独的(默认)浏览器窗口而不是新标签
【发布时间】:2012-10-20 11:07:54
【问题描述】:

我正在尝试使用 C# 并排打开两个单独的浏览器 windows。我试过使用 Process.Start(url) 但这会导致 Chrome 打开新标签而不是新窗口。这似乎适用于 IE,但是我希望有可以与不同类型的浏览器一起使用的代码,即:IE、Chrome、Firefox 和 Safari。如何检测默认浏览器,然后并排打开两个单独的窗口?另外,我希望能够将两个窗口并排放置,可以吗?

【问题讨论】:

  • 你为什么要这个?作为用户,打开两个 chrome 窗口(可能除了我的主浏览器窗口之外)会让我烦恼不已。

标签: c# browser process.start


【解决方案1】:

如果您想在 chrome 中打开新窗口而不是新标签页,此代码对我有用

  Process process = new System.Diagnostics.Process();
  process.StartInfo.FileName = "chrome";
  process.StartInfo.Arguments = <yoururl> + " --new-window"; 
  process.Start();

【讨论】:

    【解决方案2】:

    这更多的是关于浏览器的配置方式,而不是从 C# 调用进程的方式。在这两种情况下,系统都会简单地调用分配给处理 URL 的默认程序。该命令可能有参数,也可能没有参数,但通常它会简单地调用chrome.exe &lt;url&gt;,然后chrome.exe 进程会从那里决定如何处理参数。

    我知道的唯一方法是检查注册表(在HKEY_CLASSES_ROOT\http\shell\open\command 下)并解析字符串值。一旦您知道特定的浏览器,您就可以使用命令行参数来控制演示。当然,这是特定于 Windows 的,管理起来可能很麻烦。

    如果浏览器不支持从命令行设置几何图形,您将需要使用 FindWindowSetWindowPos(使用 P/Invoke)来操作窗口位置。

    我不确定您的应用程序,但嵌入WebBrowser Control 会满足您的需求吗?这样您就可以完全控制演示文稿。

    【讨论】:

    • 我尝试使用 WebBrowser 控件,但结果证明需要大量工作才能使其像普通浏览器一样无缝运行。就我的目的而言,在系统上使用默认浏览器就足够了。根据我最初的问题,我实际上发现我可以通过更改参数将打开新窗口的选项传递给System.Diagnostics.Process 对象。例如,Chrome 使用--new-window,Firefox 使用-new-window。我只需要找出是否可以并排放置两个窗口。如果没有,我可以没有它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多