Piloter un programme tiers

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 30 déc. 2009 à 11:49
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 30 déc. 2009 à 23:15
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 déc. 2009 à 15:15
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
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
30 déc. 2009 à 23:15
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
0
Rejoignez-nous