【问题标题】:Open new tab in IE在 IE 中打开新标签页
【发布时间】:2010-10-01 11:43:51
【问题描述】:

我正在使用以下代码在 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、Google Chrome 和 Firefox(目前)。

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

例如:如果他选择了带有新标签选项的IE,那么系统会尝试查找程序最后打开的页面,如果存在则刷新,如果不存在则在新标签中打开。

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

对于 Firefox 和 Google Chrome,我仍然需要这样做。

感谢您的回答,再次抱歉我的英语不好:)

【问题讨论】:

    标签: c# internet-explorer


    【解决方案1】:

    你可以简单地使用:

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

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

    【讨论】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-28
        • 2018-11-04
        • 2016-03-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多