Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DSPack: ошибка при инициализации TSampleGraber как службу [D7, Win2k, WinXP]


Nickla ©   (2006-10-02 16:01:00) 

Я хочу использовать 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).


Как это исправить?


Nickla   (2006-10-04 12:15:00) [1]

Помоему хороший вариант. Если вариант есть лучше - в студию. Я за рациональное решение и спор


clickmaker   (2006-10-03 10:16:00) [2]


> Заметьте имено CoInitializeEx(NIL, 2))

2=COINIT_APARTMENTTHREADED
такая модель у данного ком-сервера. Но это вовсе не значит, что для всех так надо


Nickla   (2006-10-03 10:06:00) [3]

Я решил эту проблему. решается она очень и очень просто - не надо ничего регистрировать. Достаточно понять различия работ служб и EXE-приложений.

Вот что я накопал - все приложения автоматически выполняют OleCheck(CoInitializeEx(NIL, 2)), службам же это просто ненадо. Как итог - где используем COM обьекты выполняем на Create

OleCheck(CoInitializeEx(NIL, 2));

и на Destroy -  

CoUninitialize();

Заметьте имено CoInitializeEx(NIL, 2)) и никак иначе. На многих форумах дают ошибочную подсказку с CoInitialize. Это не то


Nickla   (2006-10-03 09:53:00) [4]

Выполняю regsvr32.exe qedit.dll и ничего не меняется. В событиях такая же ошибка.

хотелось бы узнать список необходимых библиотек и COM обьектов... и как бы это проверить что они загружены


AbrosimovA   (2006-10-03 09:04:00) [5]

regsrv32 qedit.dllдля регистрации фильтра SampleGrabber.


clickmaker   (2006-10-02 18:43:00) [6]

похоже что либо некая DLL отсутствует, либо некий COM-объект не зарегистрирован


Наверх

Титульная страница Поиск, карта сайта Написать письмо