在python中实现COM接口类型库

在python中实现COM接口类型库,python,com,Python,Com,我有一个插件,我正试图为我工作的公司的一个应用程序创建一个示例。我正在尝试用Python编写这个插件 插件体系结构的工作方式是插件需要实现在提供的COM类型库中定义的接口。因此,它是该类型库的COM客户端,最后通过应用程序为其提供后期绑定COM的ClassID,将其注册为注册表和应用程序的COM服务器 我正在使用pythoncom和win32com,并使用makepy.py从libarary类型生成所需的python代码,但我似乎找不到一种方法来创建一个从这个类型库实现接口的类 任何关于这方面的

我有一个插件,我正试图为我工作的公司的一个应用程序创建一个示例。我正在尝试用Python编写这个插件

插件体系结构的工作方式是插件需要实现在提供的COM类型库中定义的接口。因此,它是该类型库的COM客户端,最后通过应用程序为其提供后期绑定COM的ClassID,将其注册为注册表和应用程序的COM服务器

我正在使用pythoncom和win32com,并使用makepy.py从libarary类型生成所需的python代码,但我似乎找不到一种方法来创建一个从这个类型库实现接口的类

任何关于这方面的建议都将不胜感激

谢谢

当我尝试运行Dispatch以获取COM对象时,我得到以下示例:

>>>interface=win32com.client.Dispatch“{68AC7909-804F-4D6D-861C-8382DAA7B029}” 回溯最近一次呼叫上次: 文件,第1行,在 文件C:\Python26\lib\site packages\win32com\client\\uuuu init\uuuuuu.py,第95行,在Dispatch中 调度,用户名=动态。\ GetGoodDispatch和用户名调度,用户名,clsctx 文件C:\Python26\Lib\site packages\win32com\client\dynamic.py,第108行,在_GetGoodDispatchAndUserName中 返回_GetGoodDispatchIDispatch,clsctx,用户名 文件C:\Python26\Lib\site packages\win32com\client\dynamic.py,第85行,位于\u GetGoodDispatch中 IDispatch=pythoncom.coCreateInstanceDispatch,无,clsctx,pythoncom.IID_IDispatch pywintypes.com_错误:-2147221164,“类未注册”,无,无

您只需使用win32com.client.Dispatch:

对象=win32com.client.DispatchClass.Name

以下是ActiveState快速入门指南中的示例:

>>> import win32com.client
>>> w=win32com.client.Dispatch("Word.Application")
>>> w.Visible=1
>>> w
<win32com.gen_py.Microsoft Word 8.0 Object Library._Application>
comtypes也一样,更简单,支持自定义接口

from comtypes.client import CreateObject
obj = CreateObject("Excel.Application")

是的,我试过了,我得到:pywintypes.com_错误:-2147221164,“类未注册”,无,None@Caleb:你得到的是什么?在这种情况下,您应该使用win32com.gencache.EnsureModule。makepy告诉你应该写哪行。请参见我的编辑以获取示例。顺便问一下,您的com接口是否真的支持分派,即是否可以从VB6/VBScript/等进行访问。?否则,您不能使用win32com-您必须使用comtypes。或者你可能想使用它,因为它的API比win32com好一点。我不确定。如果IDispatch没有出现在.IDL中,这是否意味着它不支持IDispatch?很抱歉,我无权访问生成类型库的代码。@Caleb:是的,IDL中定义的接口应该继承自IDispatch。如果没有,则无法从win32com使用它们。
from comtypes.client import CreateObject
obj = CreateObject("Excel.Application")