![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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