comtypes中的COM对象VARIANT参数(python)
我正在尝试在 Python 2.7.6.1 中使用 comtypes 1.1.0 包来访问 COM 对象,但我遇到了一个基本问题,就是从 COM 对象的方法中获取正确的数据,因为返回的是 VARIANT 类型。
>>> 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)
在 Python 中如何转换 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 包)吗?
非常感谢。
彼得
1 个回答
-1
我不是Python专家,但我也在处理VARIANTS方面有一些经验。
这段“伪代码”可能对你有帮助。
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))
...
附注:
我觉得,继续学习Python的工作原理是个好主意,虽然还没测试过,但以下内容可能有效:
...
vValue,tValue,bsRetMsg = ReadVariable(automation.VARIANT("dwt"))
...