Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.09;
Скачать: CL | DM;

Вниз

Ошибка при вызове GetActiveOleObject из DLL   Найти похожие ветки 

 
Navi   (2006-03-06 20:24) [0]

Здравствуйте!
Есть юнит в котором такая процедура:
procedure Connect(AClassName: String);
var
 ID: IDispatch;
begin
 try
   ID:= GetActiveOleObject(AClassName);
 except
   ID:= CreateOleObject(AClassName);
 end;
end;
Юнит используется в DLL, которая экспортирует эту процедуру. При вызове возникает ошибка:
"Не был произведен вызов CoInitialize". Как это лечить?


 
jack128 ©   (2006-03-06 20:47) [1]

Navi   (06.03.06 20:24)
Очевидно произвести вызов CoInitialize.


 
Navi   (2006-03-08 19:06) [2]

To jack128 [1]: оно понятно, но как правильно?
Так пойдет CoInitializeEx(nil, COINIT_MULTITHREADED);?


 
tesseract ©   (2006-03-08 20:21) [3]

Сойдёт.
только Coinitialize здесь наверно не причём. Он при опрециях с OLE не вызывается.
ID Желательно объявить как  OLEVARIANT. Я так подозреваю что объект не COM, а OLE.


> begin  
>   try    ID:= GetActiveOleObject(AClassName);  
>    except
>    ID:= CreateOleObject(AClassName);
>  end;

Так не пойдёт.

Попробуй :

begin
try
  ID:= GetActiveOleObject(AClassName);
  except
     on EOleSysError do Id:=null; // а всё равно ничего не вернули
  end;
  if id=null then
   try
   ID:=CreateOleObject(AClassName);
  except
          on EOleSysError do СовсемХана;
  end;

По-моему так (С) Винни-пых


 
jack128 ©   (2006-03-08 21:15) [4]

CoInitialize(0)



Страницы: 1 вся ветка

Текущий архив: 2006.04.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.073 c
1-1141886515
Михаил (Киров)
2006-03-09 09:41
2006.04.09
Нуль-модемное соединение


4-1138106786
er_long76
2006-01-24 15:46
2006.04.09
Плагины для Windows Messenger


4-1137403828
Senator1979
2006-01-16 12:30
2006.04.09
очередь принтера


15-1142933816
Fin
2006-03-21 12:36
2006.04.09
Обновление антивирусных баз у Symantec?


2-1143329888
TBitMap
2006-03-26 03:38
2006.04.09
Как нарисовать извилистую линию по заданным точкам?