js获取Com组件的字符串数组
2010-05-12 13:06
176 查看
1. COM相关接口函数实现, 接口getStepArray
2. html代码实现, 采用javascript调用COM接口获取到数组为VBArray,需要将其转换为JSArray
typedef struct tagStepInfo{ int iDigit; CComBSTR bstrText; }SETPINFO; STDMETHODIMP CXXX::getStepArray(VARIANT *pVariant) { // TODO: Add your implementation code here SETPINFO stSInfo; PackStep(pVariant, stSInfo); return S_OK; } //打包SETPINFO到Variant变量; HRESULT CXXXXX::PackStep(VARIANT *pVariant, SETPINFO stSInfo) { long i = 0; HRESULT hr = S_OK; SAFEARRAY* pArray = NULL; VARIANT var; pArray = SafeArrayCreateVector(VT_VARIANT, 0, 2); if (pArray == NULL){ return -1; } VariantInit(&var); var.vt = VT_I4; var.lVal = stSInfo.iDigit; //转换为BSTR字符串类型 ::VariantChangeType(&var, &var, 0, VT_BSTR); hr = SafeArrayPutElement(pArray, &i, &var); if (FAILED(hr)){ SafeArrayDestroy( pArray ); return -1; } ++i; var.bstrVal = stSInfo.bstrText.Copy(); hr = SafeArrayPutElement(pArray, &i, &var); if (FAILED(hr)){ SafeArrayDestroy( pArray ); return -1; } ++i; VariantInit(pVariant); VariantClear(&var); pVariant ->vt = VT_ARRAY | VT_VARIANT; pVariant ->parray = pArray; return 0; }
2. html代码实现, 采用javascript调用COM接口获取到数组为VBArray,需要将其转换为JSArray
<html> <body> <script language=javascript> if (document.AtlComId){ var vbArray = document.AtlComId.getStepArray(); var jsArray = vbArray.toArray(); alert(jsArray); } </script> <object classid="clsid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" id="AtlComId" width="100" height="100"> </object> </body> <html>
相关文章推荐
- js字符串数组传入Com组件里
- js获取数组、字符串末尾项的方法
- js获取array数组中出现次数最多的元素(字符串)
- c#中将【对象转成 JSON 格式的字符串】 及获取Json格式字符串并将转成Json对象 及对js数组取数据
- js实用篇之数组、字符串常用方法
- Js 获取url、字符串中特定参数的值
- js 字符串类型转为数组类型
- JS中,split()用法(将字符串按指定符号分割成数组)
- js 数组快速查询指定字符串方法
- WEB页面_js代码中,数组数据转字符串 (idArray是数组)
- JS获取数组小技巧
- js中数组拼接成字符串
- JSON是一种数据交换格式(JSON对象/JSON字符串/JSON数字/JSON数组等) -------- JSON对象是JS引擎的内置对象
- js数组转字符串,字符串转数组
- js实现prototype扩展的方法(字符串,日期,数组扩展)
- JS 将变量 转化为字符串的方法, 适用于所有类型,数组, 对象,函数和基本类型等
- js数组的操作及数组与字符串的相互转化
- PHP与JS混编 获取数组、日期转换、控件属性控制
- 数组中获取字符串 - bash
- js中的数组和字符串的一些方法