![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Посылка сообщению сервису (службе) и наоборот. [D5, WinXP]
Sheriff © (2003-01-22 15:43:00)Здравствуйте умельцы :). Я тут первый раз на форуме, но вот такая проблемка у меня.
Есть программа (сервис, служба), написанная с использованием компонента TService и таймеров. Проблема заключаеться в "наблюдении" за действием сервиса, т.е. что в данный момент делает сервис. Допустим есть 2 действия сервиса: 1. Опрос сом-порта и 2. Запись данных в базу данных. Хочу сделать небольшую програмку, которой бы сервис посылал сообщения о том, что в данный момент он делает. Сообщения я регистрирую сам. Только вот почемуто сервис не хочет отправлять сообщения, хотя на стади проектирования (когда я делаю проверочную прогонку) он отправляет их. В чем дело? Отправляю сообщения таким образом - SendMessage(Hdl,WM_Scan,0,0), где Hdl - хэндл окна, которому посылаеться сообщение, а WM_Scan - мое зарегестрированное сообщение.
Если кто знает об этом деле поподробнее, плиз обьясните.
Sheriff (2003-01-22 21:37:00) [1]ZZ - а какой способ лучше? Я просто то что знаю, то и делаю, ты название скажи, я там разберусь, найду доки по теме, не проблема...
Набережных С. (2003-01-22 19:14:00) [2]И как раз для "systemных" это проще всего
Набережных С. (2003-01-22 19:13:00) [3]>ZZ ©
>А на практике это проверено??
Разумеется.
ZZ (2003-01-22 18:27:00) [4]либо потребуется следующее:
Запусти в сервисе доп. поток с дескриптором интерактивного юзера, подключи его к дефолтному столу интерактивной станции
А на практике это проверено?? А то есть небольшие сомнения в возможности подчеркнутого (как раз таки из за разных станций : интерактивной и той, где находятся "systemные" сервисы)
Sheriff
Из кучи вариантов общения между прогами - оконные сообщения, имхо, самый бредовый для сервисов.
Набережных С. (2003-01-22 17:44:00) [5]Что-то последнее время косяком пошли. Сезон, что ли? :))
Твой сервис выполнеятся в собственной оконной станции. Либо сделай его интерактивным, либо потребуется следующее:
Запусти в сервисе доп. поток с дескриптором интерактивного юзера, подключи его к дефолтному столу интерактивной станции и в нем принимай и отправляй сообщения.
Или сам этот поток используй для взаимодействия с пользователем, или запускай интерактивную прогу сервисом... да много вариантов
Digitman (2003-01-22 15:53:00) [6]см. OpenService() и ControlService()
Sheriff (2003-01-22 15:51:00) [7]и еще заодно если кто знает как сделать так, чтобы эта служба (сервис) принимала мои сообщения. Стандартными функциями типа TMyServise.DefaultHandler(var Mesage) не перехватываються, или я посылаю неправильно. Посылаю соответственно - SendMessage(hservice,WM_MyMessage,0,0). Вроде Hservice определяю правильно, хотя в этом месте тоже есть вопросик небольшой, но наверно пока хватит на сегодня. :) Если кто хоть чем поможет - буду очень благодарен!