Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.016 c
2-1179988065
Marat
2007-05-24 10:27
2007.06.17
Проблема с запросом


11-1162418974
SKA1997
2006-11-02 01:09
2007.06.17
Оптимальная версия Delphi ?


2-1180100114
забыл ник %)
2007-05-25 17:35
2007.06.17
Подсказка в трее


8-1159820586
Чайник
2006-10-03 00:23
2007.06.17
Как очистить TImage от ранее загруженного изображения?


15-1179915575
DiamondShark
2007-05-23 14:19
2007.06.17
Ахтунг в госдуме