使用SAFEARRAY返回的代碼
更新時(shí)間:2007年03月05日 00:00:00 作者:
前天碰到有人問(wèn)SAFEARRAY的問(wèn)題,我正好對(duì)VB SCRIPT里面如何得到COM組件返回的數(shù)組感興趣,就試驗(yàn)了一下。
IDE用的是VC7.1
開(kāi)始都差不多,建立工程,建立COM對(duì)象,建立方法:
接口定義:
[id(2), helpstring("method GetArray")] HRESULT GetArray1([out,retval] VARIANT* v);
方法實(shí)現(xiàn):
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;
}
注意的一點(diǎn)就是:VBS或其它腳本環(huán)境中要得到返回?cái)?shù)組參數(shù),數(shù)組中的類型是VARIANT類型。
VBS測(cè)試腳本
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
開(kāi)始都差不多,建立工程,建立COM對(duì)象,建立方法:
接口定義:
[id(2), helpstring("method GetArray")] HRESULT GetArray1([out,retval] VARIANT* v);
方法實(shí)現(xiàn):
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;
}
注意的一點(diǎn)就是:VBS或其它腳本環(huán)境中要得到返回?cái)?shù)組參數(shù),數(shù)組中的類型是VARIANT類型。
VBS測(cè)試腳本
Dim v4
Cnxn4.Add 1, 2
v4 = Cnxn4.GetArray1()
Dim x
For x = Lbound(v4) To Ubound( v4 )
MsgBox v4(x)
Next
相關(guān)文章
VBS教程:VBScript 語(yǔ)句-Property Set 語(yǔ)句
VBS教程:VBScript 語(yǔ)句-Property Set 語(yǔ)句...2006-11-11MSScriptControl.ScriptControl組件的用法實(shí)例
這篇文章主要介紹了MSScriptControl.ScriptControl組件的用法實(shí)例,需要的朋友可以參考下2014-08-08vbs輸入助手執(zhí)行會(huì)調(diào)用好多亂的進(jìn)程
用vbs實(shí)現(xiàn)輸入助手2008-05-05VBS基礎(chǔ)篇 - vbscript常用函數(shù)及功能
這篇文章主要介紹了VBS基礎(chǔ)篇 - vbscript常用函數(shù),需要的朋友可以參考下2018-06-06vbs腳本實(shí)現(xiàn)下載jre包并靜默安裝的代碼實(shí)例
這篇文章主要介紹了vbs腳本實(shí)現(xiàn)下載jre包并靜默安裝的代碼實(shí)例,通過(guò)本文可以學(xué)到VBS中下載遠(yuǎn)程文件的方法、靜默安裝jre包的方法,需要的朋友可以參考下2014-08-08