当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > 使用SAFEARRAY返回的代码

VBScript
ActiveX漏洞通用Exploit vbs修正版
一个扩展时间段的dir命令的vbs脚本
Rcmd.vbs [Remote Cmd with wmi]远程脚本
Rcmd.vbs 1.01修正版 增加了下载功能
将VBS或ASP中的代码转成一句话形式
FileSystemObject 示例代码
灵活实用的VBS入门教程基础篇
vbs实用软件自造:Windows脚本应用实例
好玩的vbs特色代码
vbs实现的下拉框对应键入值
用vbs实现防止计算机使用 LMHosts 文件
vbs脚本大全,配有实例 DOS命令,批处理 脚本 代码
vbscript下调用 Dir 命令的方法
用vbscript实现从后到前阅读一个文本文件
用vbs实现zip功能的脚本
vbs搜索文件名或者得到目录列表
vbs shellcode转换escape加密
ADOX.Catalog中文帮助详细说明chm文档
vbs Windows系统改变或修改网卡的MAC地址的脚本与软件
IE浏览器增加“复制图像地址”的右键菜单的vbs代码

VBScript 中的 使用SAFEARRAY返回的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 122 ::
收藏到网摘: n/a

前天碰到有人问SAFEARRAY的问题,我正好对VB SCRIPT里面如何得到COM组件返回的数组感兴趣,就试验了一下。
IDE用的是VC7.1
开始都差不多,建立工程,建立COM对象,建立方法:
接口定义:
[id(2), helpstring("method GetArray")] HRESULT GetArray1([out,retval] VARIANT* v);
方法实现:
STDMETHODIMP CATL3::GetArray1(VARIANT * pvaVariant)
{
std::vector< float> vct;
vct.push_back( 11.4 );
vct.push_back( 12.4 );
vct.push_back( 14.4 );
CComSafeArray<VARIANT> saMatrix;
for ( int i = 0 ; i < vct.size(); ++i )
{
saMatrix.Add( CComVariant(vct[i]));
}
VariantInit(pvaVariant);
CComVariant var( saMatrix );
var.Detach( pvaVariant );
return S_OK;
}
注意的一点就是:VBS或其它脚本环境中要得到返回数组参数,数组中的类型是VARIANT类型。
VBS测试脚本
Dim v4
Cnxn4.Add 1, 2
v4 = Cnxn4.GetArray1()
Dim x
For x = Lbound(v4) To Ubound( v4 )
MsgBox v4(x)
Next