python win32com对多接口类的处理

本文介绍了一个COM类实现多个接口的情况,并演示了如何使用win32com的CastTo函数完成不同接口之间的转换。此外,还提供了另一种通过makepy.py生成代码来达到同样目的的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下午碰到这么一个问题,一个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,其实,感觉没有几个人真正的熟悉。  这个东西它虽然强大,但也比较复杂,似乎快被大家遗忘了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值