Piloter un programme tiers

Signaler
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Bonjour,

J'essaie de trouver une façon de piloter un programme tiers, à partir d'Excel 2207, pour éviter un tas de tâches manuelles et fastidieuses qui résulte en une perte de temps énorme...

Ma première idée était d'utiliser les APIs telles que EnumWindows, EnumChildWindows, GetWindowText,... et SendMessage pour le traitement.

En utilisant les Handles des contrôles, il y a moyen d'interagir avec les contrôles. Par contre, ces handles changent d'une session à une autre ou d'un PC à un autre... Comme il y a plusieurs contrôles de mêmes types et de mêmes classes, je ne vois pas comment je peux être sûr d'interagir avec le bon contrôle à tout coup.

Je pourrais aussi utiliser la position des contrôles et utiliser SendKeys, mais je n'aime pas particulièrement ce dernier. Je ne le trouve pas vraiment fiable (à tort ou à raison ?)

Ma question est donc:
Est-ce que quelqu'un aurait une idée sur une méthode à utiliser ?
NB: les contrôles à utiliser sont de types différents: CommandButton, Textbox, Combobox, ...

Merci aux pros.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI

2 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
tu peux passer par le biai de le ctrlID.
c'est invariant pour un controle donné (définit a la création du soft)

Private Declare Function SendDlgItemMessage Lib "user32.dll" Alias "SendDlgItemMessageA" (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetDlgItem Lib "user32.dll" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
Private Declare Function GetDlgCtrlID Lib "user32.dll" (ByVal hwnd As Long) As Long
...


Spyy++ te les donnera

pas de senkeys, c'est pas une bonne solution.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Merci Renfield, je vais regarder de ce côté.
Venant de toi, j'ai toute confiance que ça fonctionnera.


Une Belle Année à tous !


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI