【发布时间】:2011-12-05 23:37:01
【问题描述】:
我正在尝试从名为 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 和 EnsureDispatch 都会发生这种情况。我还浏览了 makepy 生成的模块,并尝试调度其中提供的每个不同的 CLSID - 无济于事。
有人知道问题可能是什么吗?非常感谢您的帮助!
谢谢!
【问题讨论】: