Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CoCreateInstance проблема [D5, WinXP]


dumb ©   (2002-11-01 12:10:00) 

Господа, следующий код работает по-разному в EXE приложении и DLL.


uses Classes, SysUtils, ActiveX, Windows, ComObj;

...

CoInitialize(nil);
hr := CoCreateInstance(CLSID_APPKRNL, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IID_IAPP, pIAPP);
if Failed(hr) then
goto suck;


В EXE все работает просто замечательно, но в DLL Failed(hr) возвращает истину. Может проблема с пермиссиями? Если да, то где их можно правильно установить?

Спасибо,
dumb


dumb   (2002-11-06 16:04:00) [1]

Не помогло. По-прежнему E_NOINTERFACE.
Если сделать regsvr32 myapp.dll /u, т.е. де-регистрировать сервер, то будет другая ошибка REGDB_E_CLASSNOTREG, т.е. оно все таки что-то там пытается создать.


dumb   (2002-11-06 15:28:00) [2]

ОК. Пробую насильно всех зарегистрировать.


Marcus   (2002-11-06 14:30:00) [3]

Понимаешь, экзешник сам себя регистрит (свои COM-объекты) при запуске, а DLL требует явной регистрации regsvr32.exe yourdll.dll. Может в этом дело ? Судя по коду ошибки, какой-то из COM-объектов остался не прописанным в реестре.


dumb   (2002-11-06 14:14:00) [4]

Возвращается E_NOINTERFACE, но это же бред?! EXEшник-то работает!
CoInitializeEx(nil, COINIT_MULTITHREADED or COINIT_APARTMENTTHREADED)не возымел эффекта.


Marcus   (2002-11-04 11:52:00) [5]

Фиг его знает, товарищ майор. Сапоги резиновые - собака след не взяла...
На самом деле нужно более подробно с кодом познакомиться. Так, по одной строчке непонятно. И что собственно возвращает CoCreateInstance (код ошибки)?
Можешь еще попробовать CoInitializeEx(nil, COINIT_MULTITHREADED or COINIT_APARTMENTTHREADED)


dumb   (2002-11-02 14:09:00) [6]

HELP!


dumb   (2002-11-01 23:39:00) [7]

Еще одна деталь - все машины на которых DLL не работает - W2K. На всех XP работает.


dumb   (2002-11-01 19:46:00) [8]

CLSCTX_INPROC_HANDLER не помог. И почему-то я не могу найти тот компонент в списке, когда использую утилиту dcomcnfg.exe.
Еще идеи?


Marcus   (2002-11-01 14:11:00) [9]

Возможно проблема в настройках секьюрити COM/DCOM. Попробуй в dcomcnfg.exe дать полный доступ к нужному COM-объекту


dumb   (2002-11-01 13:09:00) [10]

2Marcus. Вот еще что выяснилось. На некоторых машинах DLL все таки работает. Чего же остальным то не хватает?? (пробую CLSCTX_INPROC_HANDLER)


Marcus   (2002-11-01 12:26:00) [11]

Для DLL нужно CLSCTX_INPROC_HANDLER


Наверх

Титульная страница Поиск, карта сайта Написать письмо