Re[3]: OLE. 1C
От: alexzapl  
Дата: 28.08.02 08:50
Оценка:
Здравствуйте -=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);




 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.