COM接口中使用VARIANT* varNameArray返回数据给Javascript

在页面开发中,有时通过Javascript来调用COM组件提供的功能。

COM接口中使用VARIANT*可以为页面返回不定类型的数据。


如:COM接口的定义:

GetNameArray(SHORT nType, VARIANT* varNameArray);


Javascript的调用方法:

假设COM对象定义为comObj; 

var NameList = comObj.GetNameArray(1);



=======================================

对VARIANT* varNameArray的赋值方法如下:

GetNameArray(SHORT nType, VARIANT* varNameArray)

{

int ARRAY_LEN = vctCerts.size();

SAFEARRAY *psa; //使用数组整理读取的数据
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].cElements =ARRAY_LEN; //设置数组的大小
rgsabound[0].lLbound = 0;
psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound); //创建SafeArray数组

for(LONG i=0;i<vctCerts.size();i++)
{
BSTR bstr = CComBSTR(vctCerts[i].szCertDN);

VARIANT v;  
v.vt = VT_BSTR; 
v.bstrVal = bstr;
::SafeArrayPutElement(psa, &i, &v);
}

varNameArray->vt = VT_ARRAY|VT_VARIANT; //数组类型
varNameArray->parray = psa;

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值