J'essaie d'utiliser avec Python un serveur COM qui n'expose que l'interface IDispatch et ne possède ni fichier IDL ni bibliothèque de types pour cela. J'ai de la documentation pour les différentes méthodes et comment les utiliser. Essayer d'utiliser le package win32com échoue pour moi, car il semble que lorsqu'aucune information de type n'est disponible, win32com fallback pour supposer que l'accès aux attributs est une propriété get ou set, jamais une invocation de méthode.python Client IDispatch sans bibliothèque de types
C'est, quand je fais ce qui suit:
import win32com.client
c = win32com.client.GetActiveObject(server_progid)
c.someServerMethod(arg1, arg2)
win32com cherche à obtenir le someServerMethod propriété, en ignorant arg1, arg2 complètement sur le serveur. Creuser dans le code semble indiquer que le python appelle self .__ getattr__ qui n'a pas arg1, arg2.
Je cherche un moyen de résoudre ceci:
- Certains syntaxe pour dire win32com j'appelle en fait une méthode;
- Un autre client COM python qui implémentent réellement ce comportement;
- Autres suggestions, à l'exception de l'évidence «convertir manuellement la documentation en bibliothèque de types».
Merci!
Votre code ne semble pas contenir la définition de 'f', qui dans la recette liée est' f = getattr (target, aname) '. –