python activex_Python 中使用 Win32Exts 扩展调用 ActiveX控件 示例

本文通过实例详细介绍了如何使用Python的Win32Exts模块操作ActiveX控件,包括创建、显示、修改属性、调用方法和销毁控件,以五虎大战棋类小游戏为例。
摘要由CSDN通过智能技术生成

续接前文:

本文主要演示如何使用 Python 操作一个实际的ActiveX控件。

目标控件为“五虎大战”棋类小游戏,可在这里获取下载:

示例如下:

cc0128fae5e2d24a88ab657c73eeaead.png

首先导入:win32exts 并初始化 API 列表及 COM 环境:

>>> import win32exts

>>> win32exts.load_sym("*", "*")

>>> win32exts.CoInitialize(0)

指定控件的显示位置,以及显示参数(SW_SHOW):

>>> win32exts.co_push_start()

>>> win32exts.push_bstr("0,0,600,500")        ‘可选项

>>> win32exts.push_value(1)                         ‘可选项

开始创建控件对象:

>>> ax = win32exts.create_ax_object("工程2.Tigers5", -1)      ’如果想将控件创建在指定位置,第2个参数传入父窗口句柄

然后控件即显示出来了:

251c6335da577cbdc97929e3206e2c84.png

调用控件方法: ax.Ax_ListSym() 显示控件有哪些方法或者属性:

>>> print win32exts.co_invoke(ax, "Ax_ListSym", True)

----Function----

QueryInterface=1610612736(1)

AddRef=1610612737(1)

Release=1610612738(1)

GetTypeInfoCount=1610678272(1)

GetTypeInfo=1610678273(1)

GetIDsOfNames=1610678274(1)

Invoke=1610678275(1)

CaptionLBL=1745027076(get)(0)

CaptionLBL=1745027076(put)(0)

CaptionBTN=1745027075(get)(0)

CaptionBTN=1745027075(put)(0)

ImgTiger=1745027074(get)(0)

ImgTiger=1745027074(put_ref)(0)

ImgDragon=1745027073(get)(0)

ImgDragon=1745027073(put_ref)(0)

ImgShow=1745027072(get)(0)

ImgShow=1745027072(put_ref)(0)

可见空间有一个标签文本属性:CaptionLBL,支持读写操作。下面获取其内容:ax.get_CaptionLBL()

>>> print win32exts.co_get(ax, "CaptionLBL", True)

加油啊!!!

下面我们修改这个属性,亦即:ax.put_CaptionLBL( newVal )

>>> win32exts.co_push_start()

>>> win32exts.push_bstr("~~~ new caption ~~~")

>>> win32exts.co_put(ax, "CaptionLBL")

界面变化为:

350e1e978ed11c89dc126b2026679fa4.png

可见已经正确修改。

下面调用控件的方法 Ax_ShowWindow() 隐藏控件:

【Ax_*** 开头几个固有的方法为 win32exts提供, 所有控件均有!】

>>> win32exts.co_push_start()

>>> win32exts.push_value(0)       ' SW_HIDE

>>> win32exts.co_invoke(ax, "Ax_ShowWindow", True)

如果我们想要销毁控件:

>>> win32exts.co_release(ax)

1

返回值为 1,可见控件仍未销毁。事实上,该控件依旧被 win32exts 环境引用了一次。

如果再次调用:

>>> win32exts.co_release(ax)

0

ActiveX控件即被销毁。但是不建议这样重复释放操作,正确的做法如下:

>>> win32exts.delete_ax_object("工程2.Tigers5")

0

告诉 win32exts 环境不再引用该控件对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值