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

Вниз

CoCreateInstance проблема   Найти похожие ветки 

 
dumb   (2002-11-01 12:10) [0]

Господа, следующий код работает по-разному в 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


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

Для DLL нужно CLSCTX_INPROC_HANDLER


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

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


 
Marcus   (2002-11-01 14:11) [3]

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


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

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


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

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


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

HELP!


 
Marcus   (2002-11-04 11:52) [7]

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


 
dumb   (2002-11-06 14:14) [8]

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


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

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


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

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


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

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



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
6-61723
Vasechkin
2002-10-01 20:40
2002.12.19
Ну помогите же мне!!!!!


6-61740
Like
2002-10-23 22:59
2002.12.19
NetSessionDel


1-61592
sasha_delphi
2002-12-10 12:23
2002.12.19
Чтение из EXCEL файлов.


4-61866
Nick-From
2002-11-05 21:23
2002.12.19
Integer & Dword +WINAPI


3-61494
yaJohn
2002-12-02 14:45
2002.12.19
как выяснить необходимый тип параметра