代码之家  ›  专栏  ›  技术社区  ›  Fedearne

从C启动现有IE窗口选项卡中的URL#

  •  11
  • Fedearne  · 技术社区  · 14 年前

    当browserExe指向Firefox、Safari或Chrome时,以下代码将在现有浏览器窗口中打开一个链接。当指向IEXPLORE.EXE(IE7)新窗口打开。

    ProcessStartInfo pi = new ProcessStartInfo(browserExe, url);
    Process.Start(pi);
    

    ProcessStartInfo pi = new ProcessStartInfo(url);
    Process.Start(pi);
    

    当IE不是默认浏览器时,如何重用现有的IE窗口?

    1 回复  |  直到 14 年前
        1
  •  27
  •   JimSTAT    13 年前

    使用shdocvw库(添加对它的引用,您可以在windows\system32中找到它)可以获得实例列表,并使用newtab参数调用navigate:

    ShellWindows iExplorerInstances = new ShellWindows();
    if (iExplorerInstances.Count > 0)
    {
      IEnumerator enumerator = iExplorerInstances.GetEnumerator();
      enumerator.MoveNext();
      InternetExplorer iExplorer = (InternetExplorer)enumerator.Current;
      iExplorer.Navigate(url, 0x800); //0x800 means new tab
    }
    else
    {
      //No iexplore running, use your processinfo method
    }
    

    编辑:在某些情况下,您可能需要检查shellwindow是否对应于一个真正的iexplorer,而不是任何其他的WindowsShell(在w7中,所有实例都被返回,对于其他实例现在不知道)。

       bool found=false;
       foreach (InternetExplorer iExplorer in iExplorerInstances)
       {
           if (iExplorer.Name == "Windows Internet Explorer")
           {
               iExplorer.Navigate(ur, 0x800);
               found=true;
               break;
           }
       }
       if(!found)
       {
          //run with processinfo
       }
    

    你也会发现这些额外的IE导航标志很有用。有关这些标志的完整说明,请访问 http://msdn.microsoft.com/en-us/library/dd565688(v=vs.85).aspx

    enum BrowserNavConstants 
    { 
        navOpenInNewWindow = 0x1, 
        navNoHistory = 0x2, 
        navNoReadFromCache = 0x4, 
        navNoWriteToCache = 0x8, 
        navAllowAutosearch = 0x10, 
        navBrowserBar = 0x20, 
        navHyperlink = 0x40, 
        navEnforceRestricted = 0x80, 
        navNewWindowsManaged = 0x0100, 
        navUntrustedForDownload = 0x0200, 
        navTrustedForActiveX = 0x0400, 
        navOpenInNewTab = 0x0800, 
        navOpenInBackgroundTab = 0x1000, 
        navKeepWordWheelText = 0x2000, 
        navVirtualTab = 0x4000, 
        navBlockRedirectsXDomain = 0x8000, 
        navOpenNewForegroundTab = 0x10000 
    };