Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.007 c
6-44291
zxss
2003-02-20 08:42
2003.04.14
Взаимодействие сервиса NT с System Tray


1-44098
AlexMax
2003-04-02 17:07
2003.04.14
Как програмно показать Hint...


1-44218
Zew
2003-04-01 17:56
2003.04.14
Стиль windows xp


3-44069
AlexanderSK
2003-03-26 15:01
2003.04.14
Как получить данные из DOMAIN-а?


14-44339
trotski
2003-03-31 05:38
2003.04.14
C++ Builder





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский