C# 在IE中打开新选项卡

C# 在IE中打开新选项卡,c#,internet-explorer,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 =

我正在使用以下代码在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 with new tab选项,那么系统将尝试查找程序打开的最后一页并刷新它(如果存在),如果没有,他将在新选项卡中打开它

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

我仍然需要对Firefox和Google Chrome做同样的事情


谢谢你的回答,再次为我糟糕的英语道歉:)

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

您所做的所有代码都是启动一个新的IE进程,所以我看不出它如何能够利用已经运行的进程

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

您只需使用:

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

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

参考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--;

    }

+1强烈建议在用户的默认浏览器中打开。作为一个超级用户,当一个应用程序试图为一个站点启动IE时,我会非常恼火,因为我可以在1/2的时间内启动Chrome,而且我有更好的浏览体验。你在写,你的解决方案工作得很好,但是如果用户不想使用默认浏览器呢?我怎么能做到呢?据我所知,如果Fiona Holder写的话,你不能,也就是说,有一些命令行参数,你可以传递给它来提供这个功能。我对此表示怀疑,因为这意味着您试图打开的IE实例必须查看另一个实例是否打开,将URL发送到该实例并关闭自身。如果您想保证在现有IE实例中启动新选项卡,您不能通过命令行的ShellExec来实现。在ShellWindows集合中找到现有窗口后,您可能可以通过使用带有适当标志的Navigate2 API来实现这一点。由于完整性水平的挑战,这将不是一件简单的事。感谢EricLaw-MSFT,它正在发挥作用。我只需要给navigate2(我的URL,2048,…),2048打开新标签。请发布一个答案,将其标记为写答案:)顺便说一句,现在我想用fireFox和GoogleChrome做同样的工作,你有什么想法吗??