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

Résolu
sunvi Messages postés 34 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 25 août 2009 - 12 août 2009 à 12:34
sunvi Messages postés 34 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 25 août 2009 - 13 août 2009 à 11:39
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

sunvi Messages postés 34 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 25 août 2009
13 août 2009 à 11:39
j'ai trouvé
voilà la ligne de code à changer:
TCHAR classe[] = _T("32770");

en d'autres termes, il faut ajouter un # ...
3
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
12 août 2009 à 13:21
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
0
sunvi Messages postés 34 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 25 août 2009
13 août 2009 à 09:36
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...
0
Rejoignez-nous