Форум: "Система";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];
ВнизУправление службами (сервисами) Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c