metalbibi
Messages postés5Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention 1 avril 2003
-
10 févr. 2003 à 04:07
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
10 févr. 2003 à 13:19
Bonjour,
voila je cherche a établir la liste des noms des fenêtres visibles ( c'est à dire la liste que l'on peut voir dans la barre des taches ou le getionnaire de tache/application).
G utilisé la fonction EnumWindows dans le code de telle manière :
Mais je n'arrive pas a faire un trie dans les informations que je récupere, je choppe pleins de noms divers et variées(des fenetres mais aussi autre chose), de blancs et je n'arrive pas a m'en dépatouillé.
Quelqu'un sait il comment trier les informations obtenues ? Merci d'avance.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 10 févr. 2003 à 11:39
Salut,
quel critere de tri ?
Que faire des titres de fenetres obtenus ?
Donne un cahier des charges précis et alors je te fournirai ce qui te manque.
Tu peux voir un exemple enumwindows dans mon source PROG EGOISTE mais le callback est en asm pour les performances.
ciao...
metalbibi
Messages postés5Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention 1 avril 2003 10 févr. 2003 à 12:53
Merci de ta réponse ! C t bien cool.
Avec la fonction IsWindowVisible et GetClassName (que j'ai vu dans tes sources :-) je peux faire à peu pres le trie.
Mon critère de trie etait l'axe-Z.
Par contre j'aurrais aimé stocker les noms des fenetres ainsi que les hwnd dans deux tableau un CStringArray et un CPtrArray.
Peut tu me dire comment faire avec le pointeur long LPARAM pour accomplir ce miracle ?
;) @plus
Jib
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 10 févr. 2003 à 13:19
Le LPARAM de EnumWindowsProc ???
Simple, c'est toi qui y mets ce que tu veux quand tu appelles EnumWindows(). Si tu passes un pointeur sur un tableau, le tour est joué.
typedef struct _MYENUM {
DWORD idx; // ++ chaque tour
HWND hwnds[NBR];
char *names[NBR];
} MYENUM, *LPMYENUM;
tu pourrais passer un pointeur sur un truc du genre. Fais gaffe aux alloc memoire correctes et free() correspondants. Je precise que ce n'est pas le modele le + performant mais grosso modo c'est ce que feront les CStringArray et autres bidules mfc.
Pour la F1 je te conseille:
NBR = 0;
1) 1er appel EnumWindows avec LPARAM sur DWORD *NBR.
Alloc 1 seule fois de memoire totale
hmem = malloc(NBR*52 + NBR*4 + 4);
NBR*52 pour les noms
NBR*4 pour hwnds
4 pour pour DWORD idx
ciao...