Текущий архив: 2007.06.17;
Скачать: CL | DM;
Вниз
DSPack: ошибка при инициализации TSampleGraber как службу Найти похожие ветки
← →
Nickla (2006-10-02 16:01) [0]Я хочу использовать DSPack в сервис-приложении, ибо мне необходимо делать снимки с нескольких камер.
За исходный вариант взял готовую программу, переделал ее на TService и при попытке инициализации TSampleGrabber получаю в событиях:Тип события: Ошибка
Источник события: WebShotService
Категория события: Отсутствует
Код события: 0
Дата: 02.10.2006
Время: 16:20:36
Пользователь: Н/Д
Компьютер: LIBS-VIDEOSERVE
Описание:
Не найдено описание для события с кодом ( 0 ) в источнике ( WebShotService ). Возможно, на локальном компьютере нет нужных данных в реестре или файлов DLL сообщений для отображения сообщений удаленного компьютера. Попробуйте использовать ключ /AUXSOURCE= для получения этого описания, - дополнительные сведения об этом содержатся в справке. В записи события содержится следующая информация: Service failed on execute: The SampleGrabber Filter is not available on this system. (c:\program files\borland\delphi7\Lib\Component\dspack234\src\DSPack\DSPack.pas, line 3212).
Как это исправить?
← →
clickmaker © (2006-10-02 18:43) [1]похоже что либо некая DLL отсутствует, либо некий COM-объект не зарегистрирован
← →
AbrosimovA © (2006-10-03 09:04) [2]regsrv32 qedit.dll для регистрации фильтра SampleGrabber.
← →
Nickla (2006-10-03 09:53) [3]Выполняю regsvr32.exe qedit.dll и ничего не меняется. В событиях такая же ошибка.
хотелось бы узнать список необходимых библиотек и COM обьектов... и как бы это проверить что они загружены
← →
Nickla (2006-10-03 10:06) [4]Я решил эту проблему. решается она очень и очень просто - не надо ничего регистрировать. Достаточно понять различия работ служб и EXE-приложений.
Вот что я накопал - все приложения автоматически выполняют OleCheck(CoInitializeEx(NIL, 2)), службам же это просто ненадо. Как итог - где используем COM обьекты выполняем на Create
OleCheck(CoInitializeEx(NIL, 2));
и на Destroy -
CoUninitialize();
Заметьте имено CoInitializeEx(NIL, 2)) и никак иначе. На многих форумах дают ошибочную подсказку с CoInitialize. Это не то
← →
clickmaker © (2006-10-03 10:16) [5]
> Заметьте имено CoInitializeEx(NIL, 2))
2=COINIT_APARTMENTTHREADED
такая модель у данного ком-сервера. Но это вовсе не значит, что для всех так надо
← →
Nickla (2006-10-04 12:15) [6]Помоему хороший вариант. Если вариант есть лучше - в студию. Я за рациональное решение и спор
Страницы: 1 вся ветка
Текущий архив: 2007.06.17;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.021 c