Главная страница
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.013 c
1-44220
race1
2003-04-01 17:48
2003.04.14
ttreenode


6-44307
_MAD_
2003-02-15 23:19
2003.04.14
Дружда cgi и делфи


1-44206
NAlexey
2003-04-01 16:16
2003.04.14
SelLength и SelStart при изменении Text в TEdit.


14-44362
Демонов Е.В.
2003-03-31 04:20
2003.04.14
Сигмент : Смещение


4-44516
BPK
2003-02-09 13:48
2003.04.14
Объединение меню (не MDI) через DLL