vbs 中使用 Win32Exts 扩展调用 ActiveX控件 示例
续接前文:
https://blog.****.net/tan_kaishuai/article/details/97898661
github 地址:
https://github.com/tankaishuai/win32exts_for_VBScript
本文主要演示如何使用 vbs 操作一个实际的ActiveX控件。
目标控件为“五虎大战”棋类小游戏,可在这里获取下载:
https://github.com/tankaishuai/My_ActiveX_DLL_MIX_DEV/blob/master/ActiveX/Tigers5.ocx
首先需要下载:win32exts.dll (v49.202.4.4 及以上版本),然后注册之:
regsvr32 win32exts.dll
然后愉快地编写 vbs 脚本如下:
------------------------------------------------------------------------------------------------
' 初始化 win32exts
On Error Resume Next
Call win32exts.pop_edx()
If err Then
Set win32exts = WScript.CreateObject("win32exts.win32atls")
End If
On Error GoTo 0
call win32exts.load_sym("*", "*")
' 设置控件显示位置为 {0, 0, 600, 600}
g_pBuf = win32exts.malloc(520)
call win32exts.write_value(g_pBuf, 8, 4, 600)
call win32exts.write_value(g_pBuf, 12, 4, 600)
'创建 ActiveX 控件
hwnd = 0 '11798276
ax = win32exts.NewActiveXControl_IE(win32exts.L("工程2.Tigers5"), hwnd, g_pBuf)
'调用 ax.Ax_ShowWindow(1) 显示控件
call win32exts.AxWrapper_SimpleInvokeHelper(ax, win32exts.L("Ax_ShowWindow"), win32exts.L("d"), 1)
'调用 ax.put_CaptionLBL("修改后的数据") 修改控件属性
call win32exts.AxWrapper_InvokeHelper(ax, 4, 0, win32exts.L("CaptionLBL"), win32exts.L("a"), "修改后的数据")
'进入消息循环
call win32exts.SysMessageLoop()
------------------------------------------------------------------------------------------------
保存该 vbs 脚本为 test_ActiveX_Control.vbs ,并执行之:
c:\windows\syswow64\wscript test_ActiveX_Control.vbs
显示效果如下: