我使用CComPtr Invoke()從C++調用Javascript函數。只要我從Javascript函數返回一個元素,就可以使用ComVariant對象從C++端提取它,其類型根據返回變量的數據類型設置。問題是,當我嘗試從Javascript傳輸整個數組時,CComVariant對象類型被設置爲VT_DISPATCH,而不是VT_ARRAY。任何人都可以請指導我如何檢索數組元素?我會很感激。通過CComPtr檢索數組<IDispatch>調用
0
A
回答
0
像這樣的東西應該這樣做:
HRESULT DoSomethingWithAJavaScriptArray(VARIANT v)
{
if (V_VT(&v) != VT_DISPATCH)
return E_UNEXPECTED;
_variant_t out; // need comutil.h
// get the enumeration method see [Reserved DISPIDs][1]
HRESULT hr = V_DISPATCH(&v)->Invoke(DISPID_NEWENUM, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, NULL, &out, NULL, NULL);
if (FAILED(hr))
return hr;
if (V_VT(&out) != VT_UNKNOWN)
return E_UNEXPECTED;
// get the IEnumVariant from the interface
CComPtr<IEnumVARIANT> pEnum;
hr = V_UNKNOWN(&out)->QueryInterface(IID_IEnumVARIANT, (void**)&pEnum);
if (FAILED(hr))
return hr;
// do a foreach
ULONG fetched = 0;
do
{
_variant_t element;
hr = pEnum->Next(1, &element, &fetched);
if ((FAILED(hr)) || (fetched == 0))
return S_OK;
// do something with the VARIANT here
...
}
while(TRUE);
}
的
+0
這不起作用。我測試過了。 – 2017-12-08 08:50:49
+0
@AlexeySubbota - 什麼不行?提供更多信息或發佈其他問題。 – 2017-12-08 12:53:22
+0
顯然你的解決方案。數組沒有DISPID_NEWENUM – 2017-12-08 17:29:34
相關問題
- 1. CComPtr通過引用
- 2. 通過JNA檢索數組
- 3. 通過json檢索數組數據
- 4. 通過ID檢索數組的名稱
- 5. 如何通過索引檢查數組
- 6. 通過MultiIndex檢索數據
- 7. 使用通過ajax調用檢索的數據繪製Chart.js
- 8. 通過函數調用傳遞的索引訪問數組
- 9. 通過的數組索引
- 10. 通過php數組搜索
- 11. XML檢索 - 通過函數調用或臨時文件?
- 12. 通過調用app.getElementById(id)函數無法檢索ServerHandler
- 13. 通過paolirish/infinite-scroll調用檢索函數
- 14. 通過索引使用元組列表檢索數據從數據框
- 15. 檢索通過SQL
- 16. 通過檢索索引
- 17. 通過調用數組索引功能在Python
- 18. 通過調用方法檢查數組中的單個元素
- 19. 通過JSON數據檢索數字
- 20. 如何通過調整嵌套對象數組來檢索文檔?
- 21. ajax調用迭代通過JavaScript數組
- 22. 如何通過參數調用組件?
- 23. 如何通過按鈕調用數組
- 24. 如何從jQuery中調用/檢索數組調用
- 25. 通過數據搜索多維數組
- 26. 如何通過Eloquent檢索空的json數組?
- 27. 通過JSON數組對象檢索多個值
- 28. 通過nan傳遞數組返回undefined當試圖檢索
- 29. 通過數組有效地檢索元素
- 30. Swift - 通過塊傳遞結構數組並檢索成員
可能重複[?我如何轉換一個JavaScript陣列()到ATL/COM陣列(http://stackoverflow.com/questions/5014711/how-can-i-convert-a-javascript-array-to-at-atl-com-array) – user93353 2013-04-08 07:49:02
你是對的。對不起,我錯過了那一個。 – Imran 2013-04-08 08:43:26
對不起,我可以知道從Javascript函數返回單個元素的細節嗎?感謝任何提示 – 2015-03-20 08:16:17