1. 将数组打包到VARIANT变量里 HRESULT CXXX::pack(VARIANT *pVariant, long pArgs[], long lCount) { long i; HRESULT hr; VARIANT var; SAFEARRAY* pArray; hr = S_OK; pArray = SafeArrayCreateVector(VT_VARIANT, 0, lCount); if (pArray == NULL){ return -1; } VariantInit(&var); var.vt = VT_I4; //如果是字符串数据, 以下转变其数据类型 //::VariantChangeType(&var, &var, 0, VT_BSTR); //转变后对相应的参数赋值, var.bstrVal for(i = 0; i < lCount; i++) { var.lVal = pArgs[i]; hr = SafeArrayPutElement(pArray, &i, &var); if (FAILED(hr)) { SafeArrayDestroy( pArray ); return -1; } } VariantInit(pVariant); VariantClear(&var); pVariant->vt = VT_ARRAY | VT_VARIANT; pVariant->parray = pArray; return 0; } 2. 对为数组类型的VARIANT变量进行解包