C# 如何打开两个单独的(默认)浏览器窗口而不是新选项卡
我正在尝试使用C#来同时打开两个独立的浏览器窗口。我尝试过使用C# 如何打开两个单独的(默认)浏览器窗口而不是新选项卡,c#,browser,process.start,C#,Browser,Process.start,我正在尝试使用C#来同时打开两个独立的浏览器窗口。我尝试过使用Process.Start(url),但这会导致Chrome打开新的选项卡而不是新的窗口。这似乎适用于IE,但我希望代码能够适用于不同类型的浏览器,即IE、Chrome、Firefox和Safari。如何检测默认浏览器,然后并排打开两个单独的窗口?此外,我希望能够将两个窗口相邻放置,这可能吗?这更多地是关于浏览器的配置方式,而不是如何从C#调用进程。在这两种情况下,系统只需调用指定用于处理URL的默认程序。该命令可能有参数,也可能没有
Process.Start(url)
,但这会导致Chrome打开新的选项卡而不是新的窗口。这似乎适用于IE,但我希望代码能够适用于不同类型的浏览器,即IE、Chrome、Firefox和Safari。如何检测默认浏览器,然后并排打开两个单独的窗口?此外,我希望能够将两个窗口相邻放置,这可能吗?这更多地是关于浏览器的配置方式,而不是如何从C#调用进程。在这两种情况下,系统只需调用指定用于处理URL的默认程序。该命令可能有参数,也可能没有参数,但通常它只会调用chrome.exe
,然后chrome.exe
进程从中决定如何处理该参数
我知道的唯一方法是检查注册表(在HKEY\u CLASSES\u ROOT\http\shell\open\command
下)并解析字符串值。了解特定浏览器后,就可以使用命令行参数控制演示文稿。当然,这是Windows特有的,管理起来可能很困难
如果浏览器不支持从命令行设置几何图形,则需要使用和(使用p/Invoke)来操作窗口位置
我不确定你的应用程序,但嵌入一个能满足你的需要吗?然后您就可以完全控制演示文稿了。如果您想在chrome中打开新窗口而不是新选项卡,这段代码对我来说很有用
Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = "chrome";
process.StartInfo.Arguments = <yoururl> + " --new-window";
process.Start();
Process进程=新系统.Diagnostics.Process();
process.StartInfo.FileName=“chrome”;
process.StartInfo.Arguments=+“--新窗口”;
process.Start();
我尝试使用WebBrowser控件,但要使其像普通浏览器一样无缝工作,需要做大量工作。按照我的目的,在系统上使用默认浏览器就足够了。根据我最初的问题,我实际上发现我可以通过更改参数将打开新窗口的选项传递给System.Diagnostics.Process
对象。例如,Chrome使用--newwindow
,Firefox使用-newwindow
。我只需要看看我是否能把两扇窗户并排放好。如果没有,我可以没有它。你为什么想要这个?作为一个用户,打开两个chrome窗口,可能除了我的主浏览器窗口之外,会让我非常恼火。