IDispatch类型的指针,则表明该数组对象实际是一个JavaScript的内建数组对象,在JavaScript端,我们可以通过length属性来得到数组的大小,那么在此处,可以通过GetIDsOfNames函数和Invoke函数来获取数组长度,这样可以动态变量数组内容。
复制代码 代码如下:
// 获取数组长度
BSTR bstrLength = L"length";
DISPID dispid;
hr = lpDispatch->GetIDsOfNames(IID_NULL, &bstrLength, 1,
LOCALE_USER_DEFAULT, &dispid);
if ( SUCCEEDED(hr) )
{
CComVariant varResult;
hr = lpDispatch->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT,
DISPATCH_PROPERTYGET, &noArgs, &varResult, NULL, NULL);
if ( varResult.vt == VT_I4)
{
nLength = varResult.intVal;
}
}
这个时候,nLength获得得到的就是数组的长度。
在JavaScript中的数组时一个对象,数组内容则是该对象的属性,是动态被创建的,这些属性的查询方式与length的查询方式有些类似,也是GetIDsOfNames和Invoke函数,主要差别在于名字的区别,数组中元素对象的属性,其名字是动态创建,也就是可以通过下标方式方式获取,因此,在此处,也可以通过下标方式获取该属性名称,具体如下:
复制代码 代码如下:
for ( int i=0; i<nLength; ++i)
{
CComVariant vaIndex(i, VT_I4);
vaIndex.ChangeType(VT_BSTR);
DISPID dispid;
hr = lpDispatch->GetIDsOfNames(IID_NULL, &vaIndex.bstrVal,1,
LOCALE_USER_DEFAULT, &dispid);
if ( FAILED(hr) )
{
continue;
}
CComVariant varResult;
hr = lpDispatch->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT,
DISPATCH_PROPERTYGET, &noArgs, &varResult, NULL, NULL);
VARTYPE vt = varResult.vt;
if (vt == VT_DISPATCH )
{
InvokeArray( varResult );
continue;
}
hr = varResult.ChangeType(VT_BSTR);
CComBSTR bstrVal = varResult.bstrVal;
}
于是通过这两种属性方式的调用,就可以在COM接口中便利所有的JavaScript数组对象了。
这个有什么好处呢,在查看很多网上资源的时候,发现大部分采用SAFEARRAY方式对结构体进行处理,传入到COM接口中,但SAFEARRAY在MIDL中并不被支持,而且JavaScript对象本身也不支持这个内容,要对SAFEARRAY方式操作,需要切换VBScript和JavaScript两种语言,这会导致程序编写的困难和维护人员的困惑。
直接采用JavaScript方式传入数组,对数组任意方式进行整合,就不需要通过SAFEARRAY方式进行结构体整合。同时,由于JavaScript中的每一个对象(元素)都带有本身的类型信息,因此,JavaScript中的数组时C中结构体的最佳替代方式(传递方式)。
相关推荐:
SEO很多,如何在竞争激烈的市场中脱颖而出?,在SEO优化中
seo软文用什么论坛,seo软文是什么意思 ,爱字幕的AI变脸不见了
ChatGPT无法加载?检查您的网络设置并尝试重启Chat,ai写作怎么写作文的
什么是seo长尾词,什么是seo长尾词的概念 ,绿茶ai换脸杨超越
在线AI文章生成:内容创作新革命
从语言助手到智能生活伙伴,未来的智能助手如何改变我们的生活,网站建设分站公司
AI文章比对技术:引领写作与内容审核的新革命,ai智能写作小说免费
什么是神马排名?让你的网站脱颖而出,轻松占据搜索引擎的C位!,乳山网站优化关键词排名
用AI写文章查重率高吗?揭秘AI写作与查重检测的关系
Chatttst:开启智能沟通新时代的无限可能,上海联通ai
ChatGPT中文版下载免费版:智能对话新时代,尽在,ai光波
SEO优化需要花钱吗?从零起步,如何让SEO成为企业的“隐形财富”,字体如何往ai里面倒
内容创作新时代:自动生成文章的AI如何改变写作生态
SEO策划:让你的网站迅速脱颖而出的秘诀,seo优化和技巧
SEO领先-如何借助SEO技术让您的网站脱颖而出,seo是黑客吗
SEO提供:如何通过精准的SEO策略提升网站流量与品牌影响力,刷关键词排名立的火星
SEO课:让你从小白变成搜索引擎优化高手,推广自媒体营销计划
WPJam:打破网站管理的壁垒,打造极致用户体验,广东谷歌seo工具
ChatGPT无法加载?检查网络并尝试重启,助您快速恢复畅通体验,burj ai
SEO伪创:提升网站排名的危险策略与如何避免,怎样介绍社交网站推广
AI上的文章属于原创吗?人工智能创作内容的归属问题
目前AI软件有哪些?智能新时代的必备工具
SEO可以帮助网站在搜索引擎中获得较高的排名-助力企业数字化转型的关键,赵立新AI换脸图片对比
OpenAIGPTChatSoraOpenAIChatGPT服务在中断数小时后已恢复,ai视图线稿
优化平台:让数字化转型更简单、更高效,莆田谷歌seo品牌排行
什么是seo模型,seo模块总结 ,ai技术授课
ChatPartner无法连接网络?解决方案,让你的聊天体验更顺畅!,如何用ai给自己写作文
SEO优化要钱吗?揭秘SEO投资背后的价值与回报,ai领域
SEO分类中内部优化的有:让你的网站脱颖而出!,by ai
SEO搜外:全球搜索引擎优化的秘密武器,如何选择网站建设类型呢
AI写作技巧,让创作事半功倍!
ChatGPT服务部分恢复:人工智能助力全新体验,ai对象菜单
SEO王:掌控搜索引擎优化的至高法则,助力企业飞速腾飞,网站动作优化在哪里下载
在线AI生成文章:智能写作的未来趋势
ChatGPT页面空白无法登录?如何解决这一困扰?,温州ai字幕生成
SEO每日:提高网站流量的秘密武器,助你脱颖而出,seo优化和排名技巧
SEO表格:优化网站排名的秘密武器,大数据推广营销费用多少
ChatGPT异常了:人工智能的极限与突破,ai and ethics
AI批量文章工具,让写作变得高效与轻松,cs机器人ai
Bing搜索的注意事项-提高搜索效率与准确性,轻松获取所需信息,最近ai写作软件推荐
seo给你什么帮助,seo的利与弊 ,ai 大厨
ChatGPT网站突然不能用了?如何快速解决这个问题,让你重新畅享AI对话!,ai新建多个画板
ChatGPT:OpenAI的创新之作-一款颠覆传统的语言模型,ai球衣号
seo都有什么问题,seo都有什么问题和答案 ,ai凯旋公主下载
SEO优化顾问:让您的网站脱颖而出的秘密武器,ai ps 群
GoogleGTP-智能时代的革命性突破,人工智能的新纪元,ai可以降论文ai率吗
seo重点工作是什么,seo重点工作是什么意思 ,棋谱检查ai
SEO新站优化指南:快速提升排名的必备技巧,海珠网站推广哪家有名
为什么选择老域名工具?提升网站SEO与品牌影响力的秘密武器,软文与seo文章区别
什么是蜘蛛弛?揭秘这个SEO优化背后的神秘工具,南沙seo优化排名价格