Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов COM из DLL 
:(
    Опции темы
BumSoft
Дата 8.10.2010, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 9.12.2002

Репутация: нет
Всего: нет



есть стандартный код инициализации 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:
PM MAIL   Вверх
jonie
Дата 8.10.2010, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



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


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
alexvs11
Дата 8.10.2010, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: нет
Всего: 10



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

непонятно, где главное приложение, где объект, а где dll
PM MAIL   Вверх
BumSoft
Дата 11.10.2010, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 9.12.2002

Репутация: нет
Всего: нет



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

Цитата

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


Ставил и  CLSCTX_LOCAL_SERVER .....-виснет 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0663 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.