Comment puis-je obtenir l'URL à partir d'une instance de firefox utilisant l'application .NET 2.0 windows/console? Les codes C# ou VB feront l'affaire.Obtenir l'URL de Firefox?
Merci!
Comment puis-je obtenir l'URL à partir d'une instance de firefox utilisant l'application .NET 2.0 windows/console? Les codes C# ou VB feront l'affaire.Obtenir l'URL de Firefox?
Merci!
Vous pouvez vérifier dans le code source de WatiN. Leur prochaine version est open source et prend en charge firefox, donc j'imagine que la fonctionnalité pour faire cela est dedans.
J'ai modifié la question pour ajouter plus de détails. Je fais une application winforms et j'ai besoin d'obtenir l'URL du navigateur. J'ai déjà les codes pour l'URL IE. Merci! –
il semble que cela pourrait être difficile, voici une discussion là-dessus: http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/c60b1699-9fd7-408d-a395-110c1cd4f297/
Pour la plupart des navigateurs, y compris Internet Explorer, navigateur, Firefox et Opera, la manière soutenue et sanctionné d'y parvenir est de use DDE. Le nom du sujet dans chacun d'eux est WWW_GetWindowInfo
; seul le nom de la fenêtre cible varie. Cette technique sera difficile pour vous, car .Net ne prend pas en charge DDE. Si vous pouvez trouver un moyen de contourner cette limitation, vous serez tous ensemble.
Bibliothèque DDE pour .NET: http://www.codeplex.com/ndde – Foole
La solution du pauvre, si autre chose échoue: activer la fenêtre Firefox, envoyer Ctrl + L (active la barre d'adresse), envoyer Ctrl + C (copier la sélection, ie URL, au presse-papiers) et lire le presse-papiers.
Lot de problèmes avec cette méthode (parmi eux, il fait des choses étranges pour l'utilisateur si elles sont en face de l'ordinateur) donc il est une solution de sauvegarde ...
Miser sur la réponse de Rob Kennedy et à l'aide 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: Ceci est très lent. Cela prend quelques secondes sur mon ordinateur. Le résultat ressemblera à quelque chose comme ceci:
"http://stackoverflow.com/questions/430614/get-firefox-url","Get Firefox URL? - Stack Overflow",""
Plus d'informations sur le navigateur DDE here.
J'utilisais ce morceau de code depuis quelques années.Cependant avec la sortie d'une nouvelle version de FF ça ne marche plus. Savez-vous s'il existe un autre moyen d'obtenir le même résultat? – Ayorus
Utilisation 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;
}
S'il vous plaît faire comme suit pour exécuter ce code Ajouter Référence> Com> Microsoft.Internet.Controls de VS.NET dans votre projet
Télécharger le bac de http://ndde.codeplex.com/ pour la classe DdeClient et l'ajouter à votre projet
S'il vous plaît laissez-moi savoir si un problème
Vous devez être un peu plus clair. Voulez-vous dire comment obtenir l'URL à partir d'une instance de Firefox en cours d'exécution dans une application Windows/console? – Kev
oui ... j'ai édité la question. Merci! –
Si cela est possible, vous réalisez qu'il peut y avoir plusieurs instances avec plusieurs onglets. Qu'essayez-vous d'accomplir? – Kev