Obter o URL do Firefox?

Como posso obter o URL de uma instância do Firefox usando o .NET 2.0 windows / console app? C # ou códigos VB fará.

Obrigado!

Com base na resposta de Rob Kennedy e usando NDde

using NDde.Client; class Test { public static string GetFirefoxURL() { DdeClient dde = new DdeClient("Firefox", "WWW_GetWindowInfo"); dde.Connect(); string url = dde.Request("URL", int.MaxValue); dde.Disconnect(); return url; } } 

NB: Isso é muito lento. Demora alguns segundos no meu computador. O resultado será algo parecido com isto:

 "http://stackoverflow.com/questions/430614/get-firefox-url","Get Firefox URL? - Stack Overflow","" 

Mais informações sobre o navegador DDE aqui .

Para a maioria dos navegadores, incluindo o Internet Explorer, Navigator, Firefox e Opera, a maneira suportada e sancionada de fazer isso é usar DDE . O nome do tópico em todos eles é WWW_GetWindowInfo ; apenas o nome da janela de destino varia. Essa técnica será difícil para você, porque o .Net não suporta DDE. Se você puder encontrar uma maneira de contornar essa limitação, estará tudo pronto.

parece que isso pode ser difícil, eis algumas discussões sobre isso: http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/c60b1699-9fd7-408d-a395-110c1cd4f297/

Você pode querer verificar o código fonte do WatiN. Sua próxima versão é open source e suporta o firefox, então eu imagino que a funcionalidade para fazer isso está nele.

Solução do pobre homem, se qualquer outra coisa falhar: ative a janela do Firefox, envie Ctrl + L (ativa a barra de endereço), envie Ctrl + C (seleção de cópia, ou seja, URL, para a área de transferência) e leia a área de transferência.

Muitos problemas com este método (entre eles, faz coisas estranhas para o usuário, se eles estão na frente do computador), por isso é apenas uma solução de backup …

Use o MozRepl: https://github.com/bard/mozrepl/wiki/ + mozRepl .NET Connector: http://mozreplconnector.codeplex.com/releases/view/17398

  var connect = new MozReplConnectDotNet.MozReplConnect(4242); connect.Connect(); Console.WriteLine(connect.SendRecieve("gBrowser.currentURI.spec")); 
  [DllImport("user32.dll", SetLastError = true)] static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, IntPtr windowTitle); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, StringBuilder ClassName); private static string GetURL(IntPtr intPtr, string programName, out string url) { string temp=null; if (programName.Equals("chrome")) { var hAddressBox = FindWindowEx(intPtr, IntPtr.Zero, "Chrome_OmniboxView", IntPtr.Zero); var sb = new StringBuilder(256); SendMessage(hAddressBox, 0x000D, (IntPtr)256, sb); temp = sb.ToString(); } if (programName.Equals("iexplore")) { foreach (InternetExplorer ie in new ShellWindows()) { var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(ie.FullName); if (fileNameWithoutExtension != null) { var filename = fileNameWithoutExtension.ToLower(); if (filename.Equals("iexplore")) { temp+=ie.LocationURL + " "; } } } } if (programName.Equals("firefox")) { DdeClient dde = new DdeClient("Firefox", "WWW_GetWindowInfo"); dde.Connect(); string url1 = dde.Request("URL", int.MaxValue); dde.Disconnect(); temp = url1.Replace("\"","").Replace("\0",""); } url = temp; return temp; } 

Por favor, faça o seguinte para executar este código Add Reference> Com> Microsoft.Internet.Controls do VS.NET no seu projeto

Faça o download do bin de http://ndde.codeplex.com/ para a class DdeClient e adicione-o ao seu projeto

Por favor, deixe-me saber se algum problema