华域联盟 vbs 使用SAFEARRAY返回的代码

使用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

本文由 华域联盟 原创撰写:华域联盟 » 使用SAFEARRAY返回的代码

转载请保留出处和原文链接:https://www.cnhackhy.com/14456.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部