Jak mogę uzyskać adres URL działającej instancji Firefoxa przy użyciu aplikacji windows/console .NET 2.0? Będą działać kody C# lub VB.Pobierz adres URL przeglądarki Firefox?
Dzięki!
Jak mogę uzyskać adres URL działającej instancji Firefoxa przy użyciu aplikacji windows/console .NET 2.0? Będą działać kody C# lub VB.Pobierz adres URL przeglądarki Firefox?
Dzięki!
Możesz chcieć sprawdzić w kodzie źródłowym WatiN. Ich następna wersja jest open source i obsługuje firefox, więc wyobrażam sobie, że funkcjonalność do tego jest w nim.
Edytowałem pytanie, aby dodać więcej szczegółów. Robię aplikację WinForm i muszę uzyskać adres URL przeglądarki. Mam już kody do IE Url. Dzięki! –
wydaje się, że może to być trudne, oto kilka dyskusja na jej temat: http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/c60b1699-9fd7-408d-a395-110c1cd4f297/
Dla większości przeglądarek, w tym Internet Explorer, Navigator, Firefox i Opera, wspieranej i usankcjonowane sposób robienia tego celu jest use DDE. Nazwa tematu we wszystkich z nich to WWW_GetWindowInfo
; zmieni się tylko nazwa okna docelowego. Ta technika będzie dla ciebie trudna, ponieważ .Net nie obsługuje DDE. Jeśli znajdziesz sposób na obejście tego ograniczenia, wszystko będzie gotowe.
Biblioteka DDE dla .NET: http://www.codeplex.com/ndde – Foole
Rozwiązaniem dla biednego człowieka, jeśli coś innego się nie powiedzie: aktywuj okno przeglądarki Firefox, wyślij Ctrl + L (aktywuje pasek adresu), wyślij Ctrl + C (wybór kopiowania, np. URL, do schowka) i przeczytaj schowek.
wiele problemów z tą metodą (wśród nich robi dziwne rzeczy dla użytkownika, jeśli są one w przedniej części komputera), więc jest to tylko rozwiązanie backup ...
Opierając się na odpowiedź Rob Kennedy'ego i za pomocą 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: To bardzo wolno. Zajmuje to kilka sekund na moim komputerze. Wynik będzie wyglądać następująco:
"http://stackoverflow.com/questions/430614/get-firefox-url","Get Firefox URL? - Stack Overflow",""
Więcej informacji na temat przeglądarki DDE here.
Używałem tego kawałka kodu od kilku lat.Jednak wraz z wydaniem nowej wersji FF nie działa już. Czy wiesz, czy istnieje inny sposób osiągnięcia tego samego wyniku? – Ayorus
Zastosowanie 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;
}
Proszę zrobić następujące czynności, aby uruchomić ten kod Add Reference> Com> Microsoft.Internet.Controls z VS.NET w projekcie
Pobierz pojemnik z http://ndde.codeplex.com/ dla klasy DdeClient i dodać go do swojego projektu
Proszę dać mi znać, jeśli jakikolwiek problem
Musisz być trochę bardziej przejrzysty. Masz na myśli, jak uzyskać adres URL z działającej instancji Firefoxa w aplikacji Windows/Console? – Kev
tak ... zredagowałem pytanie. Dzięki! –
Jeśli to możliwe, zdajesz sobie sprawę, że może istnieć wiele instancji z wieloma zakładkami. Co próbujesz osiągnąć? – Kev