Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

1 réponse
Avatar
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 ;-)

1 réponse

Avatar
Sylvain SF
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.