JavaScriptのArray(VARIANT型)をCOM側で作成する方法、list編


bool CreateJavaScriptArray( IActiveScript* pAS, VARIANTARG* varg, int varg_cnt, IDispatch** pout )
{
HRESULT hr;
CComPtr pD;
CComVariant vr;
DISPID idMethod;
LPOLESTR nm[] = { L"Array" };
hr = pAS->GetScriptDispatch(NULL,&pD);
_ASSERT( hr == S_OK );
hr = pD->GetIDsOfNames(IID_NULL, nm, 1, LOCALE_USER_DEFAULT, &idMethod);
_ASSERT( hr == S_OK );

DISPPARAMS pm = {0};

// 初期設定のデータ配列
pm.rgvarg = varg;
pm.cArgs =varg_cnt;

hr = pD->Invoke(idMethod,IID_NULL,LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT,&pm,&vr,NULL,NULL); // Array作成と同時にデータセット
_ASSERT( hr == S_OK );

*pout = vr.pdispVal;
(*pout)->AddRef();
return true;
}