我正在尝试从名为eSignal的数据提要提供者获取交易价格。使用他们在开发人员页面(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以及确保Dispatch都会发生这种情况。我还浏览了makepy生成的模块,并尝试分发其中提供的每个不同的CLSID-无济于事。
有人知道这个问题可能是什么吗?非常感谢您的帮助!
谢谢!
最佳答案
您确定实例化了类(但没有实例化接口)。搜寻uid {9C7CCB46-E9E8-4DDD-9784-4458877C2F10},我已收到ServerEsignal-它看起来像界面(IESignal)