在IE中打开新选项卡

时间:2010-10-01 11:43:52

标签: c# internet-explorer

我正在使用以下代码在Internet Explorer中打开网站

ProcessStartInfo startInfo = new ProcessStartInfo
{
  Arguments = "http://www.example.com",
  FileName = "C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe",
  RedirectStandardInput = true,
  UseShellExecute = false
};
System.Diagnostics.Process process = System.Diagnostics.Process.Start(startInfo);

考虑到已经打开浏览器,我如何在新标签中打开我的网站而不是新的浏览器?

那么,

我们正在构建一个用户可以使用2个选项的应用程序:

1 - 使用默认浏览器。

2-使用以下浏览器之一:IE,谷歌浏览器和Firefox(暂时)。

在选择要在其应用程序中使用的浏览器之后,他必须选择是否要在新窗口或新选项卡中打开请求的页面。

例如:如果他选择带有新选项卡选项的IE,那么系统将尝试查找程序打开的最后一页并在存在时刷新它,如果不存在,他将在新选项卡中打开它。

关于IE浏览器,我认为EricLaw -MSFT帮助我找到了打开新选项卡和新窗口的方法,我仍然需要知道如何获得打开的选项卡(已经由我的程序打开)并刷新需要。

我仍然需要为Firefox和谷歌浏览器做同样的事情。

感谢您的回答,并为我糟糕的英语再次感到抱歉:)

3 个答案:

答案 0 :(得分:8)

您可以简单地使用:

Process.Start("http://www.mysite.com");

这将必须在IE中打开,但在用户默认浏览器中作为新选项卡(如果浏览器支持它),这可能是用户想要的东西;)

答案 1 :(得分:1)

除非iexplore.exe有一些你可以传递给它的参数,否则我不确定你是否可以。

您所拥有的所有代码都是启动新的IE流程,因此我无法看到它如何能够使用已经运行的流程。

出于兴趣,如果您知道已经有浏览器在运行,为什么要使用此方法进行导航?

答案 2 :(得分:1)

参考Interop.SHDocVw.dll

 InternetExplorer ie = null;

 SHDocVw.ShellWindows allBrowser = new SHDocVw.ShellWindows();//gives all browsers
 int browserCount = allBrowser.Count - 1;//no . of browsers
 while (browserCount >= 0)
   {
     ie = allBrowser.Item(browserCount) as InternetExplorer;
     if (ie != null && ie.FullName.ToLower().Contains("iexplore.exe"))//all IE will have this name
       {
         ie.Navigate2("http://www.example.com", 0x1000);//0x1000 is the flag to open IE in new tab
         break;
       }
      browserCount--;

    }