Stockage des handles de plusieurs fenêtre IE

cs_laurentl2000 Messages postés 33 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 9 novembre 2003 - 8 nov. 2003 à 16:44
cs_laurentl2000 Messages postés 33 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 9 novembre 2003 - 8 nov. 2003 à 17:20
Bonjour,

Si l'on veut récupérer le handle d'une fenêtre de IE par exemple, il suffit d'employer
FindWindow("IEFrame",0);
.

Mais si maintenant il y a plusieurs fenêtre de IE sans que je ne connaisse leur titre, comment pourrait-on faire pour récupérer tous les handles ? J'ai pensé à mettre FindWindow(); dans une boucle en chipotant un peu mais pas moyen de passer d'une fenêtre à l'autre pour récupérer les handles...

J'ai entendu parler de la fonction EnumWindow(); mais je n'ai pas bien compris comment l'utiliser...

Merci d'avance à ceux qui pourront m'aider...

4 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
8 nov. 2003 à 17:02
Salut,
EnumWindows(...) prend en parametre une fonction callback.
La fonction EnumWindows(...) enumere les fenetres, et pour chaque fenetre qu'elle trouve, elle appelle la callback avec le handle de la fenetre.

Il te suffit dans la fonction callback d'obtenir la class de la fenetre a partir du handle, et si la class est IEFrame tu stocke le handle de la fenetre dans un tableau.
0
cs_laurentl2000 Messages postés 33 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 9 novembre 2003
8 nov. 2003 à 17:12
Tu as un petit exemple vite fait comme ça sous la main ? STP

Je calle un peu sur la signification de la fonction "callback" (je débute en C++)...

Merci déjà pour cette indication !
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
8 nov. 2003 à 17:17
Salut,
Une callback est une fonction que tu passe en parametre a une autre fonction qui elle va la rappeller avec des informations. Dans ce cas c'est EnumWindows(...) qui va appeller EnumWindowsProc(...) (la callback) autant de fois qu'il y a de fenetres.

Un exemple de fonction callback qui envoie les nom des fenetres d'Internet explorer a une listbox dont le handle est 'hList':

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
char szClass[128];
GetClassName(hwnd, szClass, 128);
if(!strcmp(szClass, "IEFrame"))
{
char szTitre[256];
GetWindowText(hwnd, szTitre, 256);
SendMessage(hList, LB_ADDSTRING, 0, (long)szTitre);
}
return true;
}
0
cs_laurentl2000 Messages postés 33 Date d'inscription samedi 22 février 2003 Statut Membre Dernière intervention 9 novembre 2003
8 nov. 2003 à 17:20
Comme ça c'est bien clair... Merci pour l'explication ! :)
0
Rejoignez-nous