python win32com对多接口类的处理

下午碰到这么一个问题,一个COM类实现了多个接口,使用win32com创建com对象之后,不知道怎么从默认接口查询到其他接口。

回来仔细看了看win32com的源码和文档,发现有个CastTo函数,它可以完成接口间的转换。

import pythoncom
import win32com.client
from pywintypes import IID

obj = win32com.client.Dispatch("ATLProject4.ATLClassA")
obj.MethodA()

objb = win32com.client.CastTo(obj, "IATLClassB")
objb.MethodB()

clsb= win32com.client.gencache.GetClassForCLSID('{58E9AE9C-A18E-4F6B-83D8-121AE6D443F0}')
objb = clsb(obj)
objb.MethodB()
最后三行代码,需要先使用一下makepy.py生成对应COM组件的代码,它的效果和CastTo是一致的。


看很多公司招聘的条件上都写着熟悉com,其实,感觉没有几个人真正的熟悉。  这个东西它虽然强大,但也比较复杂,似乎快被大家遗忘了。

你可能感兴趣的:(python,win32com,CastTo)