javascript - 如何转换 JavaScript 对象以从 C++ 访问其数据?

标签 javascript c++ arrays mfc atl

我在我的 C++ (MFC) 应用程序中使用嵌入式 IE ActiveX 控件。嵌入式 IE 有一个 JavaScript 方法,该方法使用以下(简化的)JavaScript 将数据传回我的 C++ 应用程序:

function passDataTocpp()

{   
    return {key1: 134, key2:'value2'};

}

当我在 C++ 代码中收到它时,我得到一个 VT_DISPATCH 类型的 VARIANT。我找到了this example将数组转换为 C++ 可访问的数据,但这似乎不适用于关联数组(或对象)。

知道如何访问该数据吗?

最佳答案

IDispatch::GetIdsOfNames , IDispatch::Invoke(DISPID_PROPGET) 。如果您甚至不知道该对象具有哪些属性,请查询 IDispatchEx并使用GetNextDispID枚举它们。

由于您使用的是 ATL,CComDispatchDriver是一个方便的包装 IDispatch (但不是 IDispatchEx - 您必须直接调用该电话)。由于某种原因,MSDN 中没有记录它。查找CComPtr<IDispatch>专门针对 atlcomcli.h,它相当简单。 CComDispatchDriver是它的 typedef。

关于javascript - 如何转换 JavaScript 对象以从 C++ 访问其数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23436737/

相关文章:

c++ - 如何创建一个新的字符串数组

javascript - 如何刷新页面并保留 Referer header

IE8中的Javascript跨域请求

Javascript 表单验证(多个条件)

c++ - 如何使用 C++ 检查窗口句柄是否在 Win32 中以管理模式运行?

php - fatal error : Cannot use object of type as array

javascript - 为什么 "a++ b"有效,而 "a++b"无效?

c++ - 半字节移动

c++ - Opengl 3D 立方体无法在 Windows 上正确呈现

javascript - 移动二维数组中的行和列 - Javascript