js脚本怎么接收com的IDispatch接口函数所返回的数组
js脚本如何接收com的IDispatch接口函数所返回的数组?
采用返回SAFEARRAY
1,com接口定义如下
HRESULT Asd([out,retval] VARIANT* result)
实现内容
2,js脚本调用如下:
var xmldoc = new ActiveXObject("Wsdfsgs.fgdtej");
var test3 = xmldoc.Asd();
alert(test3[0]);//打印第一个字符串
不能输出结果啊?
js里面怎样接收com输出的SAFEARRAY?
------解决方案--------------------
哈哈,恭喜楼主...果断接分
采用返回SAFEARRAY
1,com接口定义如下
HRESULT Asd([out,retval] VARIANT* result)
实现内容
STDMETHODIMP Cfgdtej::Asd(VARIANT *result)
{
// TODO: Add your implementation code here
HRESULT hr;
SAFEARRAY *pSA;
SAFEARRAYBOUND aDim[1];
aDim[0].lLbound= 0;
aDim[0].cElements= 3;
pSA= SafeArrayCreate(VT_VARIANT,1,aDim);
if (pSA != NULL)
{
_variant_t vOut;
for (long l= aDim[0].lLbound; l < aDim[0].cElements; l++)
{
vOut= _T( "aaa");
if (hr = SafeArrayPutElement(pSA, &l, &vOut))
{
SafeArrayDestroy(pSA);
return hr;
}
}
}
VariantInit(result);
V_VT(result) = VT_ARRAY|VT_VARIANT;
V_ARRAY(result)= pSA;
return S_OK;
}
2,js脚本调用如下:
var xmldoc = new ActiveXObject("Wsdfsgs.fgdtej");
var test3 = xmldoc.Asd();
alert(test3[0]);//打印第一个字符串
不能输出结果啊?
js里面怎样接收com输出的SAFEARRAY?
------解决方案--------------------
哈哈,恭喜楼主...果断接分