On 11/18/21 7:43 PM, Gabriel Ivăncescu wrote:
+ case VT_DISPATCH: { + LCID lcid = MAKELCID(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),SORT_DEFAULT); + IDispatch *disp = V_DISPATCH(v); + + if(!disp) { + nsAString_InitDepend(nsstr, NULL); + return S_OK; + } + + hres = IDispatch_Invoke(disp, DISPID_VALUE, &IID_NULL, lcid, DISPATCH_PROPERTYGET, NULL, &var, NULL, NULL); + if(FAILED(hres)) + return hres; + + if(V_VT(&var) == VT_BSTR) { + nsAString_Init(nsstr, V_BSTR(&var)); + SysFreeString(V_BSTR(&var)); + break; + } + if(V_VT(&var) == (VT_BSTR | VT_BYREF)) { + nsAString_Init(nsstr, *V_BSTRREF(&var)); + break; + } + hres = variant_to_nsstr(&var, hex_int, nsstr); + VariantClear(&var); + return hres;
Could you just use the same implementation as VT_R8 in this case? VariantChangeTypeEx should what you need. Thanks, Jacek