Здравствуйте -=Al=-, Вы писали:
=>Здравствуйте alexzapl, Вы писали:
=>>>Пример с MSDEV.application работает исправно, но для V77.application не хочет правильно реагировать на QueryInterface.
=>>>CLSID взят из реестра.
A>>напиши кусок кода как ты его создаешь.
=>Вот:
=> HRESULT hr;
=> const wchar_t *V77=L"V77.Application";
=> const unsigned int FuncNum(5);
=> wchar_t *FuncNames[FuncNum]={L"Initialize",L"EvalExpr",L"CreateObject", L"ExecuteBatch",L"RMTrade"};
=> CLSID id1C;
=> hr = CLSIDFromProgID(V77, &id1C);
=> IUnknown *punk=NULL;
=> hr = CoCreateInstance(id1C, NULL, CLSCTX_ALL | CLSCTX_REMOTE_SERVER, IID_IUnknown, (void**)&punk);
=> hr = OleRun(punk);
=> IDispatch *pdisp=NULL;
=> punk->QueryInterface(IID_IDispatch, (void**)&pdisp);
=> punk->Release();
=> LPCSTR name="RMTrade";
=> DISPID id_rmtrade=0;
=> hr=pdisp->GetIDsOfNames(IID_NULL, (WORD**)&name, 1, LOCALE_SYSTEM_DEFAULT, &id_rmtrade);
попробуй так:
IDispatch *pdisp=NULL;
hr = CoCreateInstance(id1C, NULL, CLSCTX_LOCAL_SERVER,IID_IDispatch, (void**)&pdisp);
CComBSTR name="RMTrade";
DISPID id_rmtrade=0;
hr=pdisp->GetIDsOfNames(IID_NULL, &name, 1, LOCALE_SYSTEM_DEFAULT, &id_rmtrade);