Lanzar una URL en una pestaña en una ventana de IE existente desde C #

El siguiente código abre un enlace en una ventana del navegador existente cuando browserExe apunta a Firefox, Safari o Chrome. Cuando se apunta a IEXPLORE.EXE (IE7) se abre una nueva ventana.

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

Esto abre una pestaña en una ventana existente según lo previsto, cuando IE es el navegador predeterminado.

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

¿Cómo reutilizo una ventana IE existente, cuando IE NO es el navegador predeterminado?

Usando la biblioteca shdocvw (agregue referencia a ella, puede encontrarla en windows \ system32) puede obtener la lista de instancias y llamar a navegar con el parámetro newtab:

 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 } 

Editar: en algunos casos, puede que tenga que comprobar si la ventana de shell corresponde a un explorador de iex real y no a ningún otro shell de Windows (en w7 se devuelven todas las instancias, no lo sé ahora para otras).

  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 } 

También puede encontrar útiles estos IE Navigate Flags adicionales. La descripción completa de las banderas está disponible en 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 };