J'essaie d'extraire l'URL de la barre d'adresse de IE. (IE 8 sur Windows 7) en utilisant le code C# suivant.L'accès est refusé - en essayant d'obtenir l'URL (texte) de la barre d'adresse
static string GetUrlFromIE()
{
IntPtr windowHandle = APIFuncs.getForegroundWindow();
IntPtr childHandle;
String strUrlToReturn = "";
//try to get a handle to IE's toolbar container
childHandle = APIFuncs.FindWindowEx(windowHandle, IntPtr.Zero, "WorkerW", IntPtr.Zero);
if (childHandle != IntPtr.Zero)
{
//get a handle to address bar
childHandle = APIFuncs.FindWindowEx(childHandle, IntPtr.Zero, "ReBarWindow32", IntPtr.Zero);
if (childHandle != IntPtr.Zero)
{
childHandle = APIFuncs.FindWindowEx(childHandle, IntPtr.Zero, "Address Band Root", IntPtr.Zero);
if (childHandle != IntPtr.Zero)
{
childHandle = APIFuncs.FindWindowEx(childHandle, IntPtr.Zero, "Edit", IntPtr.Zero);
if (childHandle != IntPtr.Zero)
{
strUrlToReturn = new string((char)0, 256);
GetWindowText(hwnd, strUrlToReturn , strUrlToReturn.Length);
}
}
}
}
return strUrlToReturn;
}
L'appel GetWindowText renvoie une exception «Accès refusé». En cours d'exécution de l'application avec des privilèges d'administrateur, il lance un "système ne peut pas trouver le fichier spécifié".
Des idées?
Merci! SHDocVw est une référence brillante! Cependant, la raison pour laquelle je pense que je devrais m'en tenir à la méthodologie GetText est parce que je dois faire la même chose dans la plupart des navigateurs populaires pour Windows - Chrome, Firefox, Safari, Opera. Mon plan était d'écrire une méthode personnalisée pour chaque navigateur afin d'extraire l'URL de son handle de barre d'adresse. – Sameet