trouver une fenêtre spécifique de classe *****

Le
pipo
Tout d'abord merci à toi christian de tes réponses.

Je tiens à préciser que malgrés le "bas niveau" de mes questions, je fouine
dans le msdn avant de poster ici. Le site étant en anglais et un brin
"touffu" je ne trouve pas toujours ce que je souhaite. (Sur google on trouve
pas beaucoup plus de choses)

Probléme :
Comment faire pour trouver une fenêtre précise dont on ne connait pas le nom
mais dont on connait une partie du titre.
Exemple : je veux trouver un site de classe name CN ayant comme mot dans son
titre "nom".(une fenêtre de titre "fenêtre ayant un nom" répondra au
critère)

J'arrive à récupérer le handle des fenêtres de classe CN grace à
FindWindow(CN,NULL), j'arrive à en extraire le titre grâce à
GetWindowText(hdl,buffer,taille_max) et à vérifié si elle répond au critère.
Sauf que quand la fenêtre ne répond pas au critaire et que je veux tester
une autre fenêtre j'utilise de nouveau FindWindow(CN,NULL) et je retombe
donc sur la même fenêtre.

Grace à quelle fonction puis je "boucler" sur toutes les fenêtres d'une
class name donnée?

Merci pour votre patiente ;-)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sylvain SF
Le #16453111
pipo wrote on 31/07/2008 22:55:

Comment faire pour trouver une fenêtre précise dont on ne connait pas le nom
mais dont on connait une partie du titre.

J'arrive à récupérer le handle des fenêtres de classe CN grace à
FindWindow(CN,NULL), j'arrive à en extraire le titre grâce à
GetWindowText(hdl,buffer,taille_max) et à vérifié si elle répond au critère.
Sauf que quand la fenêtre ne répond pas au critaire et que je veux tester
une autre fenêtre j'utilise de nouveau FindWindow(CN,NULL) et je retombe
donc sur la même fenêtre.

Grace à quelle fonction puis je "boucler" sur toutes les fenêtres d'une
class name donnée?



FindWindowEx

HWND parent = null; // pour le bureau, ou autre si besoin
HWND child = null; // pour commencer avec la 1ière

for (;;)
child = FindWindowEx(parent, child, CN, null);
if (child matches criteria){
break;
}
if (child == null) // no more
break;
}

ou encore
EnumWindows où ta callback (WNDENUMPROC) ressemblera à ton test actuel.

Sylvain.
Publicité
Poster une réponse
Anonyme