cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
30 déc. 2009 à 11:49
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 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
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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
...