Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.13;
Скачать: CL | DM;

Вниз

Посылка сообщению сервису (службе) и наоборот.   Найти похожие ветки 

 
Sheriff   (2003-01-22 15:43) [0]

Здравствуйте умельцы :). Я тут первый раз на форуме, но вот такая проблемка у меня.
Есть программа (сервис, служба), написанная с использованием компонента TService и таймеров. Проблема заключаеться в "наблюдении" за действием сервиса, т.е. что в данный момент делает сервис. Допустим есть 2 действия сервиса: 1. Опрос сом-порта и 2. Запись данных в базу данных. Хочу сделать небольшую програмку, которой бы сервис посылал сообщения о том, что в данный момент он делает. Сообщения я регистрирую сам. Только вот почемуто сервис не хочет отправлять сообщения, хотя на стади проектирования (когда я делаю проверочную прогонку) он отправляет их. В чем дело? Отправляю сообщения таким образом - SendMessage(Hdl,WM_Scan,0,0), где Hdl - хэндл окна, которому посылаеться сообщение, а WM_Scan - мое зарегестрированное сообщение.
Если кто знает об этом деле поподробнее, плиз обьясните.


 
Sheriff   (2003-01-22 15:51) [1]

и еще заодно если кто знает как сделать так, чтобы эта служба (сервис) принимала мои сообщения. Стандартными функциями типа TMyServise.DefaultHandler(var Mesage) не перехватываються, или я посылаю неправильно. Посылаю соответственно - SendMessage(hservice,WM_MyMessage,0,0). Вроде Hservice определяю правильно, хотя в этом месте тоже есть вопросик небольшой, но наверно пока хватит на сегодня. :) Если кто хоть чем поможет - буду очень благодарен!


 
Digitman ©   (2003-01-22 15:53) [2]

см. OpenService() и ControlService()


 
Набережных С.   (2003-01-22 17:44) [3]

Что-то последнее время косяком пошли. Сезон, что ли? :))

Твой сервис выполнеятся в собственной оконной станции. Либо сделай его интерактивным, либо потребуется следующее:
Запусти в сервисе доп. поток с дескриптором интерактивного юзера, подключи его к дефолтному столу интерактивной станции и в нем принимай и отправляй сообщения.
Или сам этот поток используй для взаимодействия с пользователем, или запускай интерактивную прогу сервисом... да много вариантов


 
ZZ ©   (2003-01-22 18:27) [4]

либо потребуется следующее:
Запусти в сервисе доп. поток с дескриптором интерактивного юзера, подключи его к дефолтному столу интерактивной станции

А на практике это проверено?? А то есть небольшие сомнения в возможности подчеркнутого (как раз таки из за разных станций : интерактивной и той, где находятся "systemные" сервисы)

Sheriff
Из кучи вариантов общения между прогами - оконные сообщения, имхо, самый бредовый для сервисов.


 
Набережных С.   (2003-01-22 19:13) [5]

>ZZ ©
>А на практике это проверено??

Разумеется.


 
Набережных С.   (2003-01-22 19:14) [6]

И как раз для "systemных" это проще всего


 
Sheriff   (2003-01-22 21:37) [7]

ZZ - а какой способ лучше? Я просто то что знаю, то и делаю, ты название скажи, я там разберусь, найду доки по теме, не проблема...



Страницы: 1 вся ветка

Текущий архив: 2003.03.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
14-39581
Amit
2003-02-27 07:21
2003.03.13
Модератор откликнись please...


1-39358
АндрейБ
2003-03-02 01:35
2003.03.13
перехват нажатия клавиши


14-39552
Mixan
2003-02-26 20:41
2003.03.13
А как посмотреть только свои сообщения


8-39417
skirdov
2002-11-30 01:24
2003.03.13
Создание форм


7-39614
Сержик
2003-01-20 08:42
2003.03.13
Как удалить всё с дискеты?