我正在尝试从名为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 - 无济于事。
有谁知道问题可能是什么?非常感谢您的帮助!
谢谢!
答案 0 :(得分:1)
您确定要实例化类(但不是接口)。谷歌搜索uid {9C7CCB46-E9E8-4DDD-9784-4458877C2F10}我得到了ServerEsignal - 它看起来像界面(IESignal)