python - 无法在 python 中调度 com 对象

标签 python com

我正在尝试从名为 eSignal 的数据源提供商获取交易价格。使用他们的开发人员页面 ( Link ) 上的示例,我可以轻松复制 C# 中的功能。不幸的是,该提供程序不支持 python 开发人员,因此我尝试使用示例中的 com 对象引用自己完成此操作。但是,我一开始就失败了,因为我无法分派(dispatch)有问题的 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 生成的模块,并尝试分派(dispatch)其中提供的每个不同的 CLSID - 但无济于事。

有人知道问题出在哪里吗?非常感谢您的帮助!

谢谢!

最佳答案

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

关于python - 无法在 python 中调度 com 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8387717/

相关文章:

python - 创建一个函数的副本,并修复了一些变量

python - 使用python pty伪终端进程发送命令并退出

c++ - msxml程序最后一行出错

c# - COM 接口(interface) c# 编码数组数组

c++ - 如何在 C++ 中维护对 COM 对象的弱引用?

c++ - 我是否通过将 Microsoft::WRL::ComPtr 作为引用 (&) 传递来完全否定它的好处?

.net - 调用Word.Documents.Add后WinWord.exe不会退出-Word .NET Interop

python - 如何使用seaborn或matplotlib在python中绘制分类特征与分类值

Python正则表达式捕获短语?

python - Django:如何为允许多个文件上传的字段编写一个干净的方法?