关于javascript:如何将字符串数组从ActiveX对象返回到JScript

关于javascript:如何将字符串数组从ActiveX对象返回到JScript

How do I return an array of strings from an ActiveX object to JScript

我需要调用Win32 API来获取一系列字符串,并且我想将这些字符串的数组返回给JavaScript。 这适用于在本地计算机上运行的脚本,而不是Web浏览器。

我的COM对象IDL文件具有我要调用的接口:

1
HRESULT GetArrayOfStrings([out, retval] SAFEARRAY(BSTR) * rgBstrStringArray);

该函数正确返回,但是在将字符串分配给JavaScript中的变量时,字符串已"丢失"。

问题是:
将字符串数组返回给JavaScript变量的正确方法是什么?
------------------------


如果我没记错的话,您需要将SAFEARRAY包裹在VARIANT中才能通过,然后使用VBArray对象在JS方面解压缩它:

1
2
3
4
5
6
7
8
9
10
HRESULT GetArrayOfStrings(/*[out, retval]*/ VARIANT* pvarBstrStringArray)
{
   // ...

   _variant_t ret;
   ret.vt = VT_ARRAY|VT_VARIANT;
   ret.parray = rgBstrStringArray;
   *pvarBstrStringArray = ret.Detach();
   return S_OK;
}

然后

1
var jsFriendlyStrings = new VBArray( axOb.GetArrayOfStrings() ).toArray();


刺9
是正确的。 COM脚本要求所有输出均为VARIANTS。

实际上,它还要求所有INPUT都同样是VARIANTS -请在您喜欢的帮助文件中查看IDispatch的详细信息。 只需考虑到ATL和类似层(很可能是您在使用的层)实现双接口的神奇之处,您就不必为此担心。 在调用实际方法之前,将调用代码传递的输入VARIANT转换为与您的方法签名匹配。


推荐阅读

    调用函数命令linux?

    调用函数命令linux?,系统,管理,网络,通用,统一,观察,地址,代码,设备,地方,怎

    linux内核总调用命令?

    linux内核总调用命令?,工作,地址,系统,信息,管理,策略,命令,目录,时间,基础,

    linux编程调用命令?

    linux编程调用命令?,系统,标准,管理,工作,基础知识,情况,环境,设备,基础,首

    linux命令查找字符串?

    linux命令查找字符串?,工具,信息,命令,字符串,系统,工作,文件,范本,样式,文

    linux命令窗口调用?

    linux命令窗口调用?,系统,工具,首页,终端,命令,数据,盘中,代码,密码,快捷键,

    linux创建数组命令?

    linux创建数组命令?,地址,工作,系统,信息,命令,代码,目录,情况,标准,文件,Lin

    linux服务器调用命令?

    linux服务器调用命令?,系统,地址,设备,标准,工作,密码,中心,盘中,网络,软件,

    linuxc调用命令框?

    linuxc调用命令框?,系统,工作,标准,情况,设备,环境,命令,函数,语言,程序,如何

    linux系统调用命令行?

    linux系统调用命令行?,系统,网络,代码,密码,位置,工作,通用,平台,电脑,环境,

    批量调用linux命令?

    批量调用linux命令?,工具,下来,软件,系统,密码,地址,时间,认证,向日葵,文件,l

    linux内核调用命令?

    linux内核调用命令?,系统,工作,信息,工具,内核,命令,名称,标准,流程,网络,在l

    linux内核态调用命令?

    linux内核态调用命令?,系统,密码,名称,代码,状态,异常,内核,工作,服务,数据,

    linux命令字符串匹配?

    linux命令字符串匹配?,系统,工具,命令,字符串,灵活,状态,文件,文本,模式,管

    linux命令调用记录?

    linux命令调用记录?,信息,系统,名称,地址,时间,数据,命令,服务,环境,用户,lin

    linux调用编辑命令行?

    linux调用编辑命令行?,工作,状态,系统,命令,模式,数字,代码,首开,第一,管理,l

    python字符串截取?

    python字符串截取?,代码,步长,位置,分析,字符串,字符,信息,灵活,数字,表示,在