Bonjour,
J'utilise l'API Windows pour contrôler une application tierce (je ne peux pas vous donner plus de détail, car c'est une application interne). Tout fonctionne à merveille (zones de saisies, listes déroulantes, boutons,...), sauf que j'échoue complètement pour piloter le menu (il y a aussi un menu popup, mais je préférerais me concentrer sur le menu fixe).
A vrai dire, je débute à peine avec UI Automation (j'ai juste déjà réussi à reprendre un bout de code pour contrôler la Frame Notification Bar d'Internet Explorer, mais ma maîtrise s’arrête là).
Ps : j'arrive quand même à contrôler le menu de Notepad par exemple sans problème via l'API Windows, mais par pour mon application en question.
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 ' Sub main() 'je récupère juste le handle de l'application ci-dessous '(j'ai encapsulé les appels aux fonctions de l'API Windows dans des classes, dont la classe statique windows) Dim hwnd As Long: hwnd = windows.find(className:="...", name:="...") If hwnd = 0 Then Exit Sub Dim hMenu As Long: hMenu = GetMenu(hwnd:=hwnd) With New CUIAutomation With .ElementFromHandle(hwnd:=ByVal hwnd).FindAll(scope:=TreeScope_Descendants, Condition:=.CreateTrueCondition()) 'cond) Dim index As Integer: For index = 0 To .Length - 1 'j'arrive à en autre afficher les noms des menus (pas des sub-menus) Debug.Print index, .GetElement(index:=index).CurrentName 'je crois qu'il faille faire un .SetFocus() pour invoquer un clic sur un élément du sous-menu Next index End With End With End Sub
Pouvez-vous m'aider à ce sujet ?
Merci par avance !
Partager