我有一个插件,我正试图创建一个应用程序的样本从我的公司工作。我试图用Python编写这个插件。
插件架构的工作方式是插件需要实现在提供的COM类型库中定义的接口。因此,它是该类型库的COM客户端,最后通过应用程序为其提供后期绑定COM的ClassID,注册为注册表和应用程序的COM服务器。
我正在使用pythoncom和win32com,并使用makepy.py从类型库中生成所需的python代码,但是我似乎找不到从该类型库创建实现接口的类的方法。
任何关于这方面的建议都将非常感谢。
谢谢
当我尝试运行Dispatch以获取COM对象时,会得到以下示例:
>>> interface = win32com.client.Dispatch('{68AC7909-804F-4D6D-861C-8382DAA7B029}')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python26\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File "C:\Python26\Lib\site-packages\win32com\client\dynamic.py", line 108, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "C:\Python26\Lib\site-packages\win32com\client\dynamic.py", line 85, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147221164, 'Class not registered', None, None)
您只需使用
win32com.client.Dispatch()
:object = win32com.client.Dispatch("Class.Name")
这是ActiveState快速入门指南中的示例:
如果不起作用,可以使用
win32com.client.gencache.EnsureModule()
来确保 生成了正确的缓存模块。comtypes也一样(更简单,支持自定义接口)
相关问题 更多 >
编程相关推荐