2014-06-21 4 views
2

python 2.7.6.1에서 COM 객체에 액세스하려면 comtypes 1.1.0 패키지를 사용하려고합니다. 그리고 VARIANT 유형을 반환하기 때문에 COM 객체 메소드에서 올바른 데이터를 얻는 데 기본적인 문제가 있습니다.COM 객체 COMTITY의 변수 객체 매개 변수 (파이썬)

>>> 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) 

어떻게 파이썬에서 VARIANT (VARIANT 포인터)를 변환합니까? OLEViewer으로

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

이 당신이 COM 방법에서 어떤을 컨버터하는 아이디어와 정확한 날짜가 있습니까?

대신 pywin32 (win32com 패키지)를 사용해야합니까?

대단히 감사합니다.

피터 내가 파이썬 전문가, 그러나뿐만 아니라 변종을 취급하고 있지 않다

+0

당신을 했 혹시 이것에 대한 해결책을 찾았나요? comtypes를 사용할 때 같은 문제가 발생합니다. 동일한 코드에서 pywin32를 문제없이 사용하고 있습니다. – clutton

답변

0

.
이 "PSEUDO"코드 조각은 당신에게 도움이 될 수

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 : 파이썬 작동, 나는 생각한다, 그러나 시험 방법 lerning 앞으로 이동
다음은 작동 할 수 있습니다 :

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