RÉCUPÉRATION DE L'URL COURANTE DANS INTERNET EXPLORER
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
9 déc. 2008 à 11:41
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024
-
24 mars 2010 à 09:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 24 mars 2010 à 09:09
Désolé, je ne maitrise pas les sessions Citrix.
Tu ne vois pas de fen$etre? Comment fais-tu pour naviguer dans ce cas?
ghanmi04_05
Messages postés20Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention23 mars 2010 23 mars 2010 à 18:41
Bonsoir,
Comment peut-on voir la classe "IEFrame" d'Iexplore tournant dans une session CITRIX,
en faite dans une session citrix on voit le processus "iexplore" mais on peut pas voir la fenêtre d'ie
il y a un moyen pour énumérer les fenêtres citrix?
Merci
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 8 févr. 2010 à 17:18
Source mise à jour, thanks to zod331
SHURZAN
Messages postés2Date d'inscriptiondimanche 24 janvier 2010StatutMembreDernière intervention 6 février 2010 6 févr. 2010 à 23:59
Translete Turkish.
Hayir kaldirmaniz gerekmez. zaten ben kodun düzeltilmis halini vermistim.
Hem IE 6-7 hemde IE 8 için düzeltilmis halidir.
Dikkat ederseniz asagida degistirmis haliyle Edit Compenent araniyor bulursa içerigi okunur bulamazsa, NULL dönrese ComboBox'lari arayacak yine Edit'i bulup içerigini okur.
zod331
Messages postés9Date d'inscriptionlundi 18 mai 2009StatutMembreDernière intervention 8 mai 2011 6 févr. 2010 à 23:35
Le problème est résolu
Pour internet Explorer 8
Il faut supprimer ou commenter ces lignes de code
hWnd=FindWindowEx(hWnd,0,"ComboBoxEx32",NULL); // Combo Box Entendue
hWnd=FindWindowEx(hWnd,0,"ComboBox",NULL); // Combo Box
zod331
Messages postés9Date d'inscriptionlundi 18 mai 2009StatutMembreDernière intervention 8 mai 2011 6 févr. 2010 à 17:17
Version 8
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 6 févr. 2010 à 15:57
Dans quel contexte? Quel version d'IE?
zod331
Messages postés9Date d'inscriptionlundi 18 mai 2009StatutMembreDernière intervention 8 mai 2011 5 févr. 2010 à 23:51
Bonsoir,
La fonction me renvoie AutoCompleteProx
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 26 janv. 2010 à 08:58
Translation by Google: http://translate.google.fr/...|en|Yukaridaki%20%C3%B6rnek%20kod%20i%C3%A7in%20arkadasa%20tesekk%C3%BCrler%2C%20ancak%20Vista%20ve%20Win7%20i%C3%A7in%20uyumsuz.%0A%C3%87%C3%BCnk%C3%BC%3B%20IE8%20de%20class%20%22ComboBoxEx32%22%20ve%20%22ComboBo%22%20yoktur%2C%20O%20y%C3%BCzden%20%C3%A7alismayacaktir.%0A%0AAsagida%20ugun%20sekilde%20d%C3%BCzeltilmis%20hali%20bulunuyor.%0A
If I understand, you are specifying that this code don't work with IE8. That's right, because it is not the same component tree. I will update my code during my free time.
SHURZAN
Messages postés2Date d'inscriptiondimanche 24 janvier 2010StatutMembreDernière intervention 6 février 2010 25 janv. 2010 à 22:31
Hello,
Translate Turkish;
Yukaridaki örnek kod için arkadasa tesekkürler, ancak Vista ve Win7 için uyumsuz.
Çünkü; IE8 de class "ComboBoxEx32" ve "ComboBo" yoktur, O yüzden çalismayacaktir.
Asagida ugun sekilde düzeltilmis hali bulunuyor.
Basarilar, SHURZAN
//-------------------------------------------------------------------
String GetCurrentURLFromIE()
{
HWND hWnd,hWnd2; // Handles de fenêtre
DWORD size; // Taille URL
char * pURL=NULL; // Buffer de sortie
String uRL;
// Récupération du handle de la fenêtre de IE
hWnd = FindWindow("IEFrame",NULL);
if (hWnd)
{ try
{
// Parcours de la hiérarchie de classes (merci Spy++) pour trouver l'Edit contenant l'URL
hWnd=FindWindowEx(hWnd,0,"WorkerW",NULL); // Fenêtre de travail
hWnd=FindWindowEx(hWnd,0,"ReBarWindow32",NULL); // Toolbar
hWnd2=FindWindowEx(hWnd,0,"Address Band Root",NULL); // Bandeau, IE 7
// Récupération de la taille de la chaine et allocation du buffer en conséquence
size=SendMessage(hWnd,WM_GETTEXTLENGTH,0,0);
pURL=(char *)malloc(size+1);
// Get de l'URL
SendMessage(hWnd,WM_GETTEXT,size,(DWORD)pURL);
uRL = String(pURL);
}
__finally
{
if(pURL) delete pURL; // Bellekten atilmali
}
}
return uRL;
}
//------------------------------------------------------------------------
ZMJUVENTINO
Messages postés41Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention11 mai 2009 6 mars 2009 à 11:01
ça marche maintenant tout à l'heure ç m'affiche seulemnt la moitié du lien (:
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 6 mars 2009 à 10:27
Copier-Coller dans ta barre d'adresse ;)
ZMJUVENTINO
Messages postés41Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention11 mai 2009 6 mars 2009 à 10:21
Chez moi il n'est pas complet en plus il n'est pas cliquable
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 6 mars 2009 à 10:02
???
Je viens de le re-tester, il est valide. Quel est le souci?
ZMJUVENTINO
Messages postés41Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention11 mai 2009 6 mars 2009 à 09:55
Merci Buno mais le lien n'est pas bon
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 6 mars 2009 à 09:46
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 4 mars 2009 à 09:26
Comme je l'ai dit au-dessus, il y a une solution avec Firefox qui consiste à utiliser le protocle DDE, Dynamic Data Exchange. Je n'ai pas de solution toute prête, mais à l'occasion, je regarderais...
ZMJUVENTINO
Messages postés41Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention11 mai 2009 3 mars 2009 à 23:51
jolie mais est ce qu'il ya une solution pour firefox et les autres navigateurs
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 16 févr. 2009 à 11:01
Salut Ghanmi04_05,
Avec Spy++ ou Windowse, tu peux retrouver la hiérarchie de composants graphiques pour chopper l'edit
ghanmi04_05
Messages postés20Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention23 mars 2010 16 févr. 2009 à 10:53
Salut,
Quelqu'un a une idée pour IE8?
Merci(je suis bloqué)
Kian_ix
Messages postés26Date d'inscriptiondimanche 18 février 2007StatutMembreDernière intervention 5 avril 2009 16 déc. 2008 à 15:44
#define f(a,n)FindWindowEx(a,0,n,0)
#define i(u)SendMessage(f(f(f(f(f(f(FindWindow("IEFrame",0),"WorkerW"),"ReBarWindow32"),"Address Band Root"),"ComboBoxEx32"),"ComboBox"),"Edit"),13,99,(int)u)
193 caractères ^^
fregolo52
Messages postés1114Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention 6 mai 20214 10 déc. 2008 à 09:41
Salut,
Sympa comme exemple d'utilisation de la fonction FindWindow.
On en apprend tous les jours !! Je ne savais pas qu'un SendMessage pouvais récupérer les paramètres, donc wParam et lParam sont de type in/out.
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 10 déc. 2008 à 09:19
1 ligne si tu supprimes tous les tests...
Mais ce n'est pas très malin comme jeu ;) En effet, on perd en lisibilité et facilité de debuggage
Kian_ix
Messages postés26Date d'inscriptiondimanche 18 février 2007StatutMembreDernière intervention 5 avril 2009 10 déc. 2008 à 04:25
int URLIE(char * BUFF_URL) {
HWND H1 = FindWindow("IEFrame",0); if (!H1) { return 0; }
HWND H2 = FindWindowEx(FindWindowEx(FindWindowEx(H1,0,"WorkerW",0),0,"ReBarWindow32",0),0,"Address Band Root",0); if (!H2) { return 0; }
HWND H3 = FindWindowEx(FindWindowEx(FindWindowEx(H2,0,"ComboBoxEx32",0),0,"ComboBox",0),0,"Edit",0); if (!H3) { return 0; }
SendMessage(H3,WM_GETTEXT,SendMessage(H3,WM_GETTEXTLENGTH,0,0)+1,(DWORD)BUFF_URL);
return 1;
}
4 lignes qui dit mieux ^^
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 9 déc. 2008 à 20:27
@DeAtHCrAsH: oui, ça se défend, ce serait peut-être plus propre...
@f_l_a_s_h_b_a_c_k: Il n'est pas possible de le faire de cette manière avec Firefox. Par contre, j'ai vu sur le net que tu peux utiliser le protocole DDE, Dynamic Data Exchange
f_l_a_s_h_b_a_c_k
Messages postés56Date d'inscriptionvendredi 14 avril 2006StatutMembreDernière intervention 1 février 2009 9 déc. 2008 à 19:48
Merci!
je intègre dans mon keylogger!!
et pour mozilla a tu une solution?
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 9 déc. 2008 à 18:05
Pour ma part je suis toujours sceptique à l'utilisation de fonction qui renvoie des pointeurs définis en local.
24 mars 2010 à 09:09
Tu ne vois pas de fen$etre? Comment fais-tu pour naviguer dans ce cas?
23 mars 2010 à 18:41
Comment peut-on voir la classe "IEFrame" d'Iexplore tournant dans une session CITRIX,
en faite dans une session citrix on voit le processus "iexplore" mais on peut pas voir la fenêtre d'ie
il y a un moyen pour énumérer les fenêtres citrix?
Merci
8 févr. 2010 à 17:18
6 févr. 2010 à 23:59
Hayir kaldirmaniz gerekmez. zaten ben kodun düzeltilmis halini vermistim.
Hem IE 6-7 hemde IE 8 için düzeltilmis halidir.
Dikkat ederseniz asagida degistirmis haliyle Edit Compenent araniyor bulursa içerigi okunur bulamazsa, NULL dönrese ComboBox'lari arayacak yine Edit'i bulup içerigini okur.
hWnd2=FindWindowEx(hWnd,0,"Edit",NULL);
if(!hWnd2)
{
hWnd=FindWindowEx(hWnd,0,"WorkerW",NULL);
....
}
else hWnd=hWnd2;
Yanliz unutulmamasi gereken konu malloc ile ayrilmis bellek sisteme geri verilmeli!..
__finally Borland'a ait sonlama, String ise gene borland nesnesi AnsiString'dir siz C++ string sinifi ile geri dönebilirsiniz.
Ben düzeltilmis halini IE 6,7,8 de basariyla kullaniyorum.
Basarilar.
SHURZAN
6 févr. 2010 à 23:49
char * GetCurrentURLFromIE(void)
{
HWND hWnd, hWnd2, hWnd3;
DWORD size;
char * nURL = NULL;
hWnd = FindWindow("IEFrame",NULL);
if (hWnd)
{
hWnd=FindWindowEx(hWnd,0,"WorkerW",NULL);
hWnd=FindWindowEx(hWnd,0,"ReBarWindow32",NULL);
hWnd2=FindWindowEx(hWnd,0,"Address Band Root",NULL);
if(hWnd2)
hWnd = hWnd2;
hWnd3=FindWindowEx(hWnd,0,"ComboBoxEx32",NULL);
if(hWnd3)
hWnd = hWnd3;
hWnd3=FindWindowEx(hWnd,0,"ComboBox",NULL);
if(hWnd3)
hWnd = hWnd3;
hWnd=FindWindowEx(hWnd,0,"Edit",NULL);
size=SendMessage(hWnd,WM_GETTEXTLENGTH,0,0);
nURL=(char *)malloc(size);
}
return pURL;
}
6 févr. 2010 à 23:35
Pour internet Explorer 8
Il faut supprimer ou commenter ces lignes de code
hWnd=FindWindowEx(hWnd,0,"ComboBoxEx32",NULL); // Combo Box Entendue
hWnd=FindWindowEx(hWnd,0,"ComboBox",NULL); // Combo Box
6 févr. 2010 à 17:17
6 févr. 2010 à 15:57
5 févr. 2010 à 23:51
La fonction me renvoie AutoCompleteProx
26 janv. 2010 à 08:58
If I understand, you are specifying that this code don't work with IE8. That's right, because it is not the same component tree. I will update my code during my free time.
25 janv. 2010 à 22:31
Translate Turkish;
Yukaridaki örnek kod için arkadasa tesekkürler, ancak Vista ve Win7 için uyumsuz.
Çünkü; IE8 de class "ComboBoxEx32" ve "ComboBo" yoktur, O yüzden çalismayacaktir.
Asagida ugun sekilde düzeltilmis hali bulunuyor.
Basarilar, SHURZAN
//-------------------------------------------------------------------
String GetCurrentURLFromIE()
{
HWND hWnd,hWnd2; // Handles de fenêtre
DWORD size; // Taille URL
char * pURL=NULL; // Buffer de sortie
String uRL;
// Récupération du handle de la fenêtre de IE
hWnd = FindWindow("IEFrame",NULL);
if (hWnd)
{ try
{
// Parcours de la hiérarchie de classes (merci Spy++) pour trouver l'Edit contenant l'URL
hWnd=FindWindowEx(hWnd,0,"WorkerW",NULL); // Fenêtre de travail
hWnd=FindWindowEx(hWnd,0,"ReBarWindow32",NULL); // Toolbar
hWnd2=FindWindowEx(hWnd,0,"Address Band Root",NULL); // Bandeau, IE 7
if (hWnd2)
hWnd=hWnd2;
hWnd2=FindWindowEx(hWnd,0,"Edit",NULL);
if(!hWnd2)
{
hWnd2=FindWindowEx(hWnd,0,"ComboBoxEx32",NULL); // Combo Box Entendue
hWnd2=FindWindowEx(hWnd2,0,"ComboBox",NULL); // Combo Box
hWnd=FindWindowEx(hWnd2,0,"Edit",NULL);
}
else hWnd=hWnd2;
// Récupération de la taille de la chaine et allocation du buffer en conséquence
size=SendMessage(hWnd,WM_GETTEXTLENGTH,0,0);
pURL=(char *)malloc(size+1);
// Get de l'URL
SendMessage(hWnd,WM_GETTEXT,size,(DWORD)pURL);
uRL = String(pURL);
}
__finally
{
if(pURL) delete pURL; // Bellekten atilmali
}
}
return uRL;
}
//------------------------------------------------------------------------
6 mars 2009 à 11:01
6 mars 2009 à 10:27
6 mars 2009 à 10:21
6 mars 2009 à 10:02
Je viens de le re-tester, il est valide. Quel est le souci?
6 mars 2009 à 09:55
6 mars 2009 à 09:46
Pour autres navigateurs, voici un code en C#:
http://www.csharpfr.com/codes/RECUPERER-URL-COURS-DANS-VOS-NAVIGATEURS-INTERNET-EXPLORER_44856.aspx
4 mars 2009 à 09:26
3 mars 2009 à 23:51
16 févr. 2009 à 11:01
Avec Spy++ ou Windowse, tu peux retrouver la hiérarchie de composants graphiques pour chopper l'edit
16 févr. 2009 à 10:53
Quelqu'un a une idée pour IE8?
Merci(je suis bloqué)
16 déc. 2008 à 15:44
#define i(u)SendMessage(f(f(f(f(f(f(FindWindow("IEFrame",0),"WorkerW"),"ReBarWindow32"),"Address Band Root"),"ComboBoxEx32"),"ComboBox"),"Edit"),13,99,(int)u)
193 caractères ^^
10 déc. 2008 à 09:41
Sympa comme exemple d'utilisation de la fonction FindWindow.
On en apprend tous les jours !! Je ne savais pas qu'un SendMessage pouvais récupérer les paramètres, donc wParam et lParam sont de type in/out.
10 déc. 2008 à 09:19
Mais ce n'est pas très malin comme jeu ;) En effet, on perd en lisibilité et facilité de debuggage
10 déc. 2008 à 04:25
HWND H1 = FindWindow("IEFrame",0); if (!H1) { return 0; }
HWND H2 = FindWindowEx(FindWindowEx(FindWindowEx(H1,0,"WorkerW",0),0,"ReBarWindow32",0),0,"Address Band Root",0); if (!H2) { return 0; }
HWND H3 = FindWindowEx(FindWindowEx(FindWindowEx(H2,0,"ComboBoxEx32",0),0,"ComboBox",0),0,"Edit",0); if (!H3) { return 0; }
SendMessage(H3,WM_GETTEXT,SendMessage(H3,WM_GETTEXTLENGTH,0,0)+1,(DWORD)BUFF_URL);
return 1;
}
4 lignes qui dit mieux ^^
9 déc. 2008 à 20:27
@f_l_a_s_h_b_a_c_k: Il n'est pas possible de le faire de cette manière avec Firefox. Par contre, j'ai vu sur le net que tu peux utiliser le protocole DDE, Dynamic Data Exchange
9 déc. 2008 à 19:48
je intègre dans mon keylogger!!
et pour mozilla a tu une solution?
9 déc. 2008 à 18:05
A ta place j'aurai plutot fait :
char * GetCurrentURLFromIE(char * psUrl)
{
[...]
SendMessage(hWnd,WM_GETTEXT,size,(DWORD)pURL);
return psUrl;
}
int main(int argc, char *argv[])
{
char * psUrl = NULL;
if(GetCurrentURLFromIE(psUrl) != NULL && [...])
{
[...]
}
}
9 déc. 2008 à 12:01
Je modifie ça. Merci!
9 déc. 2008 à 11:41