Главная страница
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.03 c
15-1179635628
@!!ex
2007-05-20 08:33
2007.06.17
Сон....


2-1179920684
DmitrichJ
2007-05-23 15:44
2007.06.17
Поиск строки в строке


2-1180174977
GeLLeR
2007-05-26 14:22
2007.06.17
Вопрос про dll.


3-1174911349
Stanislav
2007-03-26 16:15
2007.06.17
неотображаются русские буквы в ASP


15-1179910817
Кевларвестов Семен
2007-05-23 13:00
2007.06.17
Почему-то не устанавливается BDS 2006