RÉCUPÉRATION DE L'URL COURANTE DANS INTERNET EXPLORER

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 9 déc. 2008 à 11:41
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 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.

https://codes-sources.commentcamarche.net/source/48672-recuperation-de-l-url-courante-dans-internet-explorer

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
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és 20 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 23 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és 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
8 févr. 2010 à 17:18
Source mise à jour, thanks to zod331
SHURZAN Messages postés 2 Date d'inscription dimanche 24 janvier 2010 Statut Membre Derniè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.

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
zod331 Messages postés 9 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 8 mai 2011
6 févr. 2010 à 23:49
Source modifiée pour la rendre compatible ie8

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;
}
zod331 Messages postés 9 Date d'inscription lundi 18 mai 2009 Statut Membre Derniè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és 9 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 8 mai 2011
6 févr. 2010 à 17:17
Version 8
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
6 févr. 2010 à 15:57
Dans quel contexte? Quel version d'IE?
zod331 Messages postés 9 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 8 mai 2011
5 févr. 2010 à 23:51
Bonsoir,
La fonction me renvoie AutoCompleteProx
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
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és 2 Date d'inscription dimanche 24 janvier 2010 Statut Membre Derniè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

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;
}
//------------------------------------------------------------------------
ZMJUVENTINO Messages postés 41 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 11 mai 2009
6 mars 2009 à 11:01
ça marche maintenant tout à l'heure ç m'affiche seulemnt la moitié du lien (:
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
6 mars 2009 à 10:27
Copier-Coller dans ta barre d'adresse ;)
ZMJUVENTINO Messages postés 41 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 11 mai 2009
6 mars 2009 à 10:21
Chez moi il n'est pas complet en plus il n'est pas cliquable
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
6 mars 2009 à 10:02
???
Je viens de le re-tester, il est valide. Quel est le souci?
ZMJUVENTINO Messages postés 41 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 11 mai 2009
6 mars 2009 à 09:55
Merci Buno mais le lien n'est pas bon
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
6 mars 2009 à 09:46
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
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és 41 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 11 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és 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
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és 20 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 23 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és 26 Date d'inscription dimanche 18 février 2007 Statut Membre Derniè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és 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
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és 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
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és 26 Date d'inscription dimanche 18 février 2007 Statut Membre Derniè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és 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
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és 56 Date d'inscription vendredi 14 avril 2006 Statut Membre Derniè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és 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Derniè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.

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 && [...])
{
[...]
}
}
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
9 déc. 2008 à 12:01
Euh...oui, tout à fait! J'ai même des fuites mémoires du coup...
Je modifie ça. Merci!
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 déc. 2008 à 11:41
free(pURL) mal placé, pURL peut être NULL.
Rejoignez-nous