无法在python中调度com对象

时间:2011-12-05 15:32:08

标签: python com

我正在尝试从名为eSignal的数据Feed提供商处获取交易价格。在他们的开发者页面(Link)上使用他们的示例,我可以轻松地在C#中复制功能。不幸的是,提供程序不支持python开发人员,因此我试图自己这样做,在他们的示例中使用com对象引用。但是,我一开始就失败了,因为我无法发送有问题的com对象。

com对象由eSignal提供(WinSig.exe包含com对象数据),我使用makepy(IESignal v.1.0.0)注册它:

C:\Python26\Lib\site-packages\win32com\client>python makepy.py
Generating to C:\Python26\lib\site-packages\win32com\gen_py\9C7CCB46-E9E8-4DDD-9784-4458877C2F10x0x1x0.py
Building definitions from type library...
Generating...
Importing module

因此模块文件生成成功。然后我尝试从python发送它:

from win32com.client import Dispatch
from win32com.client.gencache import EnsureDispatch

CLSID = '{9C7CCB46-E9E8-4DDD-9784-4458877C2F10}'
print Dispatch(CLSID)

但是,这会导致错误:

com_error: (-2147221164, 'Class not registered', None, None)

Dispatch以及EnsureDispatch都会发生这种情况。我还浏览了makepy生成的模块,并尝试调度那里提供的每个不同的CLSID - 无济于事。

有谁知道问题可能是什么?非常感谢您的帮助!

谢谢!

1 个答案:

答案 0 :(得分:1)

您确定要实例化类(但不是接口)。谷歌搜索uid {9C7CCB46-E9E8-4DDD-9784-4458877C2F10}我得到了ServerEsignal - 它看起来像界面(IESignal)