Текущий архив: 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.45 MB
Время: 0.031 c