Launch a URL in a tab in an existing IE window from C#

后端 未结 1 1647
醉酒成梦
醉酒成梦 2020-11-30 07:48

The following code opens a link in an existing browser window when browserExe is pointing to Firefox, Safari or Chrome. When pointing to IEXPLORE.EXE (IE7) a new windows is

相关标签:
1条回答
  • 2020-11-30 08:36

    Using shdocvw library (add reference to it, you can find it in windows\system32) you can get the list of instances and call navigate with the newtab parameter:

    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
    }
    

    Edit: in some cases you may have to check if the shellwindow corresponds to a real iexplorer an not to any other windows shell (in w7 all instances are returned, don't know now for others).

       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
       }
    

    You may also find these additional IE Navigate Flags useful. Full description of the flags are available at 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 
    };
    
    0 讨论(0)
提交回复
热议问题