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

Вниз

Управление службами (сервисами)   Найти похожие ветки 

 
Borys   (2003-02-18 13:23) [0]

Написано два приложение одно оконное другое как сервис. Они между собой должны общаться. Можно ли для этого использовать Message? Я сколько не пробовал ничего не вышло. Служба не принимает и не отправляет message. Есть ли какой нибудь другой метод кроме PIPE. Или есть хитрость с Message в службах? Создавать окно в службе пробовал (всеравно не работает)


 
Digitman ©   (2003-02-18 14:16) [1]


> Можно ли для этого использовать Message?


Тебе уже сказано - можно ! Какая разница в том, обычный это процесс или сервис-процесс ? Да никакой ! Был бы цикл диспетчеризации/обработки нужных сообщений у принимающего сообщения код.потока, остальное - дело ядра.

А вообще для управления сервисом есть т.н. штатный механизм "контроллеров".
Управляющий процесс открывает сервис (см. OpenService) и посылает ему произвольные команды (см. ControlService)
Управляемый процесс-сервис, созданный, к примеру, на базе TServiceApplication и TService, имеет соответствующую поддержку, позволяющюю реагировать на контроллеры


 
Borys   (2003-02-18 14:44) [2]

Ладно понятно. Есть ли где-нибудь пример сервиса c обменом данных? Только не на TServiceApplication или TService, а используя API.


 
Digitman ©   (2003-02-18 14:55) [3]

может и есть

но если голова на плечах таки присутствует, то в кач-ве отправной точки эта голова лезет в хэлп, находит описание ф-ции RegisterServiceCtrlHandler(), внимательно изучает это описание и самостоятельно реализует нужный сабж)


 
Borys   (2003-02-18 15:09) [4]

ControlService меня не устраивает.
Ну а с message думать будем


 
Digitman ©   (2003-02-18 15:36) [5]

ну думай, думай ... Чапай)


 
Карелин Артем ©   (2003-02-18 17:02) [6]

А у меня 2 сервиса между собой по TCP/IP общаются...
Просто и удобно.


 
Borys   (2003-02-18 19:12) [7]

Понимаешь когда tcp/ip или pipe надо организовывать свой процесс для проверки новых сообщений (в принципе так у меня работает тоже). А когда message то за тебя все делает система.
В принципе на pipe уже все сделал, но хочется разобраться.


 
Ihor Osov'yak ©   (2003-02-18 21:57) [8]

2 Borys

Предлагаю алгоритм.

1. Иследуем первым делом исходники TServiceApplication и TYahooNamesSrvc и к своему ужасу замечаем, что там нет ни одного хендлера.

2. Пьем пивко или каву (по предпочтению), продолжаем исследование, и замечаем, что в TServiceApplication.Initialize
есть такой зверь, как вызов Forms.Application.Initialize.
То есть, как минимум, можно воспользоватся зацепкой
Forms.Application.onMessage для ловли того, что будет послано на
Forms.Application.Handle с помощью PostMessage. На домашнее задание предлагается подумать, почему тут нельзя юзать SendMessage...

3. Если очень уж неймется задействовать SendMessage (иногда есть для этого довольно весткие причины ) - создаем окно и в оконной процедуре ловим соотв. сообщения. Или юзаем AllocateHWnd..






 
Borys   (2003-02-19 12:31) [9]

Будем юзать.


 
gsu ©   (2003-02-19 15:01) [10]

ну думай, думай ... Чапай)
В принципе на pipe уже все сделал, но хочется разобраться.
(-:|~



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

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

Наверх




Память: 0.49 MB
Время: 0.018 c
14-44354
Феликс
2003-03-31 02:24
2003.04.14
Проект в котором слушают космос


3-43990
denary
2003-03-18 01:41
2003.04.14
анализировать код нажатой клавиши


14-44377
skiph
2003-03-25 09:12
2003.04.14
Анимация


1-44252
asdfasdf
2003-03-31 20:14
2003.04.14
Факториал


1-44215
бред
2003-04-01 17:43
2003.04.14
JPEG > 1000 пикселей