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