Текущий архив: 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