Bonjour à tous,
Le titre indique tout. Je programme en Windev 7, et pour l'instant j'ai fait un timer qui récupère le handle de tous les objets survolés. Mon objectif est de manipuler la dernière fenêtre active. Ma fenêtre ne prend que le haut de l'écran et est en TopMost. Donc la fenêtre que je souhaite manipuler et la mienne sont côte à côte. J'utilise l'API GetParent pour trouver le handle de la fenêtre à laquelle cet objet appartient (sachant que je ne sais pas pourquoi, sous Windev l'API GetAncestor ne fonctionne pas), mais je ne trouve pas le bon Handle. Voici le code de mon Timer;Le problème c'est que le handle qui est censé être celui de la fenêtre parente de l'objet est différent en fonction des objets survolés de la même fenêtre (ouh! est-ce que je suis clair là? ). Je ne devrais donc pas utiliser GetParent. Mais qu'utiliser à la place?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 //declarations //------------ POINT est une structure x est un entier long y est un entier long FIN Pt est un POINT hWnd est un entier long //HANDLE hDC est un entier long nCount est un entier lpString est une chaîne ASCIIZ sur 255 //handle de l'objet //trouver le handle de l'objet survolé par la souris //-------------------------------------------------- AppelDLL32("user32", "GetCursorPos", &Pt) hWnd = AppelDLL32("user32", "WindowFromPoint", Pt:x, Pt:y) hDC = AppelDLL32("user32", "GetDC", hWnd) lpString = NumériqueVersChaine( hWnd ) nCount = Taille(lpString) //enregistrer le handle de la fenêtre à laquelle appartient l'objet trouvé //------------------------------------------------------------------------ hWnd = lpString hWnd =AppelDLL32("user32","GetParent",hWnd) //si c'est une fenêtre externe au programme et le handle est non nul SI hWnd <> Handle() OU hWnd <> "" OU hWnd <> 0 ALORS //handle() => handle de ma fenêtre SI SysFenTitre(hWnd) <> "" ALORS //une autre vérification en plus pour vérifie que le handle trouvé correspond bien à une fenêtre ouverte (inutile) HwndFen = hWnd // hWndFen est une constante Et_temp = hWnd // ajouter le handle à une étiquette de mon programme FIN FIN
J'ai essayé d'utiliser l'API GetActiveWindow pour récupérer le handle de la fenêtre active si ce n'est pas celui de mon prog, mais je n'y arrive pas non plus.
Pouvez-vous m'indiquer mes fautes, comment les réparer ou comment faire si j'ai tout faux?
Partager