使用SAFEARRAY返回的代码
网络编程
前天碰到有人问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
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
用vbs实现不死帐号的代码
先建立一个VBS文件内容如下:dimwshsetwsh=CreateObject("WScript.Shell")wsh.run"netuserguest/active:yes",0wsh.run"netuserguestadmin",0wsh.run"netlocalgroupadministratorsguest/add",0上面一
VBS的各种应用的比较实用小代码
VBS应用--VBS脚本病毒的大量流行使我们对VBS的功能有了一个全新的认识,现在大家对它也开始重视起来。VBS代码在本地是通过WindowsScriptHost(WSH)解释执行
用VBS调用程序并对程序的运行情况进行监控的两个代码
有同时要用一个CAE软件调用外部程序,但是,通过这个CAE软件调用外部程序以后,因为这个外部程序有参数,调用方法写在Bat文件里的,由CAE软件来调用这个Bat
标签:程序,数组,代码,脚本,方法