在IE上的新选项卡中打开网页,即使它不是默认浏览器

时间:2013-06-13 01:47:41

标签: c# internet-explorer process

背景

我们正在开发一个应用程序,您可以在互联网上搜索某些内容或打开网页,您也可以选择使用哪种浏览器。

因此,如果我想打开Goog​​le.com,并希望它在Chrome中打开,那么该网页应该会在Chrome中打开。如果我想在IE中打开Goog​​le.com,那么IE应该打开Goog​​le页面。

现在关于在浏览器中使用标签:由于所有浏览器现在都支持它,因此在新标签页中打开网页已经由浏览器本身处理,无论是Chrome还是Firefox。但在IE的情况下,如果IE是您的默认浏览器,那么IE将在新的IE选项卡中打开网页。但是,如果IE不是您的默认浏览器,那么IE将在新的IE窗口中打开网页。

一些其他信息

有几种方法可以打开网页 通过: 默认Web浏览器的代码

Process.Start(new ProcessStartInfo()
{
    FileName = "http://www.google.com"
});

或者如果您想在默认的另一个Web浏览器中打开网页。例如Firefox

string a = "%programfiles%\\Mozilla Firefox\firefox.exe";
a = Environment.ExpandEnvironmentVariables(a);

Process.Start(new ProcessStartInfo()
{
    FileName = a,
    Arguments = "http:\\www.google.com"
});

命令

>start "http://www.google.com"

  

cmd / c start“http://www.gooogle.com

问题

即使IE不是您的默认浏览器,如何在新标签页上打开IE网页(适用于版本8,9和10)?

2 个答案:

答案 0 :(得分:2)

Windows理解注册表中任何条目的简写:

HKEY_LOCAL_MACHINE
   SOFTWARE
       Microsoft
           Windows
               CurrentVersion
                   App Paths

因此,假设浏览器安装没有问题,每个客户端都会有以下条目:

  • Firefox.exe
  • IEXPLORE.EXE
  • 的chrome.exe

这意味着,你实际上可以使用这类东西:

Process.Start(new ProcessStartInfo()
{
    FileName = "firefox.exe",
    Arguments = " \"http://www.google.com\""
});

Process.Start(new ProcessStartInfo()
{
    FileName = "iexplore.exe",
    Arguments = " \"http://www.google.com\""
});

Process.Start(new ProcessStartInfo()
{
    FileName = "chrome.exe",
    Arguments = " \"http://www.google.com\""
});

..从而针对特定浏览器。

答案 1 :(得分:1)

如果您打算使用Internet Explorer进行此操作,则可以执行以下操作:

创建一个名为temp.js的(临时)脚本文件。把它放进去吧:

var navOpenInBackgroundTab = 0x1000;
var objIE = new ActiveXObject("InternetExplorer.Application");
objIE.Navigate2(FIRST TAB URL GOES HERE);
objIE.Navigate2(SECOND TAB URL GOES HERE, navOpenInBackgroundTab);
objIE.Navigate2(NTH TAB URL GOES HERE, navOpenInBackgroundTab);
objIE.Visible = true;

然后在您创建的目录中调用此脚本:wscript temp.js

不要忘记以后删除它:

哦,如果这听起来像一个可怕的黑客,请相信我:它是。