描述:
我通过ProgID获取CLSID,然后初始化OCX,查询接口最后获得dispid都是对的。
但,最后一步Invoke不成功,返回E_Unexcept。
请各位高手帮我看看,谢啦!
附代码:
IUnknown * punk;
IDispatch * pdisp;
HRESULT hresult;
CLSID clsid;
DISPID dispid;
DISPPARAMS params = {NULL, NULL, 0, 0,};
VARIANT* pvarResult = NULL;
OleInitialize(NULL);
CLSIDFromProgID(_T("TESTINVOKE.TestInvokeCtrl.1"), &clsid);
if(S_OK != CoCreateInstance(clsid, NULL , CLSCTX_ALL, IID_IUnknown, (void **)&punk))
return FALSE;
hresult = punk->QueryInterface(IID_IDispatch, (void **)&pdisp);
if(FAILED(hresult))
return FALSE;
OLECHAR * szInit = _T("AboutBox");
hresult = pdisp->GetIDsOfNames(IID_NULL, &szInit, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
if(FAILED(hresult))
return FALSE;
hresult = pdisp->Invoke(dispid, IID_NULL, 0, DISPATCH_METHOD, ¶ms, pvarResult, NULL, NULL);