Récupération du handle d'une boite de dialogue [Résolu]

Signaler
Messages postés
34
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
25 août 2009
-
Messages postés
34
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
25 août 2009
-
Bonjour,
je cherche à récupérer le handle d'une boite de dialogue pour la manipuler.
je connais son titre et sa classe grace à spy++, voilà le code que j'ai écrit:

HWND RecupHandleTitle(void){
HWND hWindow=0;
TCHAR classe[] = _T("32770");
TCHAR nom[]=_T("ma boite");



while (hWindow== NULL){

hWindow = FindWindow(classe,nom );
if (hWindow!= 0){
printf("trouve %X", hWindow);
}

}
return hWindow;
}


ça compile sans erreur, mais en débogue, le programme se plante dans la boucle while, enfin il ne s'en sort pas, ça veut dire qu'il ne trouve pas la fenêtre...
vous voyez où est l'erreur?

3 réponses

Messages postés
34
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
25 août 2009

j'ai trouvé
voilà la ligne de code à changer:
TCHAR classe[] = _T("32770");

en d'autres termes, il faut ajouter un # ...
Messages postés
354
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2011
1
FindWindow ne doit pas etre inclus dans une boucle de ce type. 1 appel à FindWindow suffit pour savoir si la fenetre existe.

Dans ton cas, FindWindow renvoi NULL, donc, ça signifie tout simplement qu'il n'arrive pas à la trouver.

Verifie donc bien la classe et le nom de ta fenetre.

Si ta fenetre est une fenetre fille d'une application, il faut utiliser FindWindowEx

D@runia
Messages postés
34
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
25 août 2009

J'ai inséré FindWindow dans la boucle while parce que la fenêtre devrait être créée par l'instruction juste avant que je ne fasse appel à ma fonction RecupHandleTitle. Plus exactement, l'instruction d'avant déclenche la compilation d'un programme, et ma boite de dialogue apparait à la fin de cette compilation. Donc j'ai utilisé la boucle while pour bloquer jusqu'à l'apparition de ma fenêtre.
Normalement c'est une fenêtre fille, même si avec spy++ elle n'a pas de parent!!
je vais essayer avec FindWindowEx pour voir...