0
我試圖調用mthod這裏需要2串你的代碼的IDispatch :: Invoke來調用一個方法失敗,錯誤0x80020005類型不匹配
VARIANT vArgs[2];
VariantInit(&vArgs[0]);
VariantInit(&vArgs[1]);
//VariantInit(&vArgs[2]);
//vArgs[2].pdispVal = pDisptEntries;
vArgs[1].bstrVal = bstrSrc;
vArgs[0].bstrVal = bstrtrgt;
vArgs[0].vt = VT_BSTR;
vArgs[1].vt = VT_BSTR;
//vArgs[2].vt = VT_DISPATCH;
dpEntry.rgvarg = vArgs;
dpEntry.cArgs = 2;
dpEntry.cNamedArgs = 0;
//dpEntry.rgdispidNamedArgs = new DISPID[2];
//dpEntry.rgdispidNamedArgs[0] = 0;
//dpEntry.rgdispidNamedArgs[1] = 1;
UINT index = -1;
EXCEPINFO ex;
hr = pDisptEntries->Invoke(dispid_Add, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD,
&dpEntry, NULL, &ex, &index);
該特定的錯誤消息通常是由於一個(或多個)方法參數是錯誤的類型 - 例如,它期望一個int並且您給它一個字符串。如果不知道所調用的對象的細節,很難說出錯的地方,但我會說'Add'類型的方法通常沒有源和目標字符串作爲參數。 – Jon 2011-03-28 15:28:09