将comtype移植到win32com



在Python脚本中,我必须替换win32com和pythoncom对comtype的使用。本质上我有这样的代码:

from comtypes.client import CreateObject, GetEvents
object_IXXObjManager = comtypes.client.CreateObject(xxxId)
connection_IXXObjManager = GetEvents(object_IXXObjManager, IXXObjManagerEventHandler())
object_IXXObjCommunications = object_IXXObjManager.QueryInterface(comtypes.gen.XXOBJLib.IXXObjCommunications)
connection_IXXObjCommunications = GetEvents(object_IXXObjCommunications, IXXObjCommunicationEventHandler(), interface=comtypes.gen.XXOBJLib.IXXObjCommunicationsEvents)

目标是使用win32com获得类似的功能。根据我的理解,事件处理程序类将不需要任何更改。第一部分很简单:

import win32com.client
object_IXXObjManager = win32com.client.Dispatch(xxxId)
event_IXXObjManager = win32com.client.WithEvents(object_IXXObjManager, IXXObjManagerEventHandler) 

然而,在尝试将事件处理程序映射到查询接口中的对象时,我遇到了问题。

object_IXXObjManager._oleobj_.QueryInterface( ??? )

你能帮我吗?我确实有一般的软件开发经验,但COM知识有限。

的替代品

object_IXXObjCommunications = object_IXXObjManager.QueryInterface(comtypes.gen.XXOBJLib.IXXObjCommunications)

可以是这样的:

iface = object_XXObjManager._oleobj_.QueryInterface(pythoncom.IID_IDispatch)
iface_Communications = win32com.client.CastTo(iface,"XXObjCommunications")
connection_XXObjCommunications = win32com.client.Dispatch(iface_Communications)

相关内容

  • 没有找到相关文章

最新更新