Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > Вызов COM из DLL


Автор: BumSoft 8.10.2010, 10:58
есть стандартный код инициализации COM объекта:
     
Код

 LPDISPATCH pdisp;
 OLECHAR FAR* sz;
 DISPID dispid;
 CLSID clsid;  
 HRESULT hr;
 LPUNKNOWN punk = NULL;
       
      CoInitialize(NULL);
      hr = CLSIDFromProgID(OLESTR("ANAPA2.Application"), &clsid);
      if (FAILED(hr))
      {
      .......
      }  
      //проверка на наличии в памяти ANAPA
      hr=GetActiveObject(clsid, NULL, &punk);
      if (FAILED(hr))
      {
        hr = CoCreateInstance(clsid,NULL,CLSCTX_SERVER,
                                IID_IUnknown, (void **)&punk);
        if (FAILED(hr))
        {
          .....
        }
      }
       
      hr = punk->QueryInterface(IID_IDispatch, (void FAR* FAR*)&pdisp);
      if (FAILED(hr))
      {
        .....
      }
      punk->Release();
      //вызов конкретной функции из SDLC
      sz=OLESTR("StdInterface");
      hr=pdisp->GetIDsOfNames(IID_NULL,&sz,1,LOCALE_USER_DEFAULT,&dispid);
      if (FAILED(hr))
      {
        .....
      }


работает уже лет сто smile ! Перешёл на Win7 - напрочь зависает на CoCreateInstance.
Чтож такое хитрое в Win7 они там понаделали?

Этот же код работает в главном приложении,а вот из DLL .... :no-sad:

Автор: jonie 8.10.2010, 17:59
CLSCTX_SERVER а может не надо такой флаг ставить... обычно такого (чтоб запускал сервер "везде") не требуется....

Автор: alexvs11 8.10.2010, 18:56
Цитата(BumSoft @  8.10.2010,  10:58 Найти цитируемый пост)
Этот же код работает в главном приложении,а вот из DLL .... :no-sad:

непонятно, где главное приложение, где объект, а где dll

Автор: BumSoft 11.10.2010, 09:45
Цитата(jonie @ 8.10.2010,  14:59)
CLSCTX_SERVER а может не надо такой флаг ставить... обычно такого (чтоб запускал сервер "везде") не требуется....

Цитата

CLSCTX_SERVER а может не надо такой флаг ставить... обычно такого (чтоб запускал сервер "везде") не требуется....


Ставил и  CLSCTX_LOCAL_SERVER .....-виснет 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)