Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
6-44305
diokant
2003-02-21 16:10
2003.04.14
Подскажите, пожалуйста. Сам не могу сообразить, а очень нужно.


3-44016
SiJack
2003-03-24 15:21
2003.04.14
InplaceEditor


1-44111
Danik
2003-04-02 16:31
2003.04.14
программа не знает что такое TSHFileOpStruct


1-44118
апельсин==
2003-04-03 08:47
2003.04.14
работа с РАР.ЕХЕ


3-44001
Ihtiandr
2003-03-25 10:31
2003.04.14
first




   Наверх