![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при вызове GetActiveOleObject из DLL [D7, Win2k]
Navi © (2006-03-06 20:24:00)Здравствуйте!
Есть юнит в котором такая процедура:
procedure Connect(AClassName: String);
var
ID: IDispatch;
begin
try
ID:= GetActiveOleObject(AClassName);
except
ID:= CreateOleObject(AClassName);
end;
end;
Юнит используется в DLL, которая экспортирует эту процедуру. При вызове возникает ошибка:
"Не был произведен вызов CoInitialize". Как это лечить?
jack128 (2006-03-08 21:15:00) [1]CoInitialize(0)
tesseract (2006-03-08 20:21:00) [2]Сойдёт.
только 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;
По-моему так (С) Винни-пых
Navi (2006-03-08 19:06:00) [3]To jack128 [1]: оно понятно, но как правильно?
Так пойдет CoInitializeEx(nil, COINIT_MULTITHREADED);?
jack128 (2006-03-06 20:47:00) [4]Navi (06.03.06 20:24)
Очевидно произвести вызов CoInitialize.