2014-06-21 2 views
2

J'essaye d'utiliser le paquetage comtypes 1.1.0 pour accéder à l'objet COM dans python 2.7.6.1 et j'ai un problème de base pour obtenir des données correctes de la méthode de l'objet COM dû au retour du type VARIANTObjet COM Paramètres VARIANT dans comtypes (python)

>>> from comtypes.client import CreateObject 
>>> fm1 = CreateObject("MCB.PCM") 
>>> fm1.ReadVariable("dwt") 
(<comtypes.automation.LP_tagVARIANT object at 0x06A541C0>,<comtypes.automation.LP_tagVARIANT object at 0x06A54210>, <comtypes.automation.LP_tagVARIANT object at 0x06A54260>, True) 

Comment faire pour convertir VARIANT (pointeur VARIANT) en python?

par OLEViewer J'ai

[id(0x60020002)] 
VARIANT ReadVariable(
     [in] VARIANT bsVar, 
     [out, optional] VARIANT* vValue, 
     [out, optional] VARIANT* tValue, 
     [out, optional] VARIANT* bsRetMsg); 

Avez-vous une idée de convertisseur et date correcte de la méthode COM?

Dois-je utiliser plutôt pywin32 (package win32com)?

Merci beaucoup.

Peter

+0

Avez-vous jamais trouver une solution à cela? J'ai le même problème lors de l'utilisation de comtypes. J'ai utilisé pywin32 sans problème sur le même code. – clutton

Répondre

0

Je ne suis pas un expert en python, mais la manipulation VARIANTES ainsi.
Ce morceau de code "PSEUDO" peut vous aider à

from ctypes import * 
from comtypes import automation 

if __name__ == '__main__': 

    ... 

    bsVar = automation.VARIANT("dwt") 
    vValue = automation.VARIANT(0) 
    tValue = automation.VARIANT(0) 
    bsRetMsg = automation.VARIANT(0) 

    ReadVariable(bsVar, addressof(vValue), addressof(tValue), addressof(bsRetMsg)) 

    ... 

PS:
Déplacement lerning en avant la façon dont fonctionne Python, je pense, mais pas testé, ce qui suit pourrait fonctionner:

... 
    vValue,tValue,bsRetMsg = ReadVariable(automation.VARIANT("dwt")) 
    ... 
Questions connexes