Obtener URL de Firefox?

¿Cómo puedo obtener la URL de una instancia de ejecución de firefox utilizando la aplicación Windows / Console de .NET 2.0? Los códigos C # o VB funcionarán.

¡Gracias!

Basándose en la respuesta de Rob Kennedy y 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: Esto es muy lento. Tarda unos segundos en mi computadora. El resultado se verá algo como esto:

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

Más información sobre el navegador DDE aquí .

Para la mayoría de los navegadores, incluidos Internet Explorer, Navigator, Firefox y Opera, la forma admitida y aprobada de hacerlo es usar DDE . El nombre del tema en todos ellos es WWW_GetWindowInfo ; solo el nombre de la ventana de destino varía. Sin embargo, esa técnica será difícil para ti porque .Net no es compatible con DDE. Si puedes encontrar una manera de evitar esa limitación, estarás listo.

parece que esto podría ser difícil, aquí hay un debate sobre esto: http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/c60b1699-9fd7-408d-a395-110c1cd4f297/

Es posible que desee comprobar en el código fuente de WatiN. Su próxima versión es de código abierto y es compatible con Firefox, por lo que me imagino que la funcionalidad para hacerlo está en él.

Solución de pobre, si algo más falla: activar la ventana de Firefox, enviar Ctrl + L (activa la barra de direcciones), enviar Ctrl + C (copiar la selección, es decir, URL, al portapapeles) y leer el portapapeles.

Muchos problemas con este método (entre ellos, hace cosas extrañas para el usuario si están frente a la computadora) por lo que es solo una solución de respaldo …

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

Haga lo siguiente para ejecutar este código Agregue referencia> Com> Microsoft.Internet.Controls de VS.NET en su proyecto

Descargue el contenedor de http://ndde.codeplex.com/ para la clase DdeClient y agréguelo a su proyecto

Por favor, hágamelo saber si algún problema