Lançar uma URL em uma aba em uma janela existente do IE a partir de C #

O código a seguir abre um link em uma janela do navegador existente quando o browserExe está apontando para o Firefox, Safari ou Chrome. Ao apontar para IEXPLORE.EXE (IE7), uma nova janela é aberta.

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

Isso abre uma guia em uma janela existente como pretendido, quando o IE é o navegador padrão.

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

Como reutilizar uma janela existente do IE, quando o IE não é o navegador padrão?

Usando a biblioteca shdocvw (adicione referência a ela, você pode encontrá-la no windows \ system32) você pode obter a lista de instâncias e chamar navegar com o 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 } 

Edit: em alguns casos, você pode ter que verificar se a shellwindow corresponde a um real iexplorer e não a qualquer outro shell do Windows (em w7 todas as instâncias são retornadas, não sei agora para outras).

  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 } 

Você também pode encontrar esses IE Navigate Flags adicionais úteis. Descrição completa das bandeiras estão disponíveis em 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 };