Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Организация связи между приложением и службой

335
10 сентября 2005 года
enola
379 / / 25.01.2005
Добрый день!
Вот возникла необходимость передать службе некую команду на выполнение ранее прописанных действий.
И приложение, и сервис на одной машине, т.е. связь, будет осуществляться локально.
Каким образом это можно сделать?
406
10 сентября 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by enola
Добрый день!
Вот возникла необходимость передать службе некую команду на выполнение ранее прописанных действий.
И приложение, и сервис на одной машине, т.е. связь, будет осуществляться локально.
Каким образом это можно сделать?


Можно по разному.
1 способ: К примеру пусть у тебя есть 3 необходимых действия котрые должна выполнить служба,создаеш 3 Event обекта с помощью CreateEvent давая им уникальные имена. И в отдельном потоке садишся для просмотра состояния этих обектов с помощью WaitForMultipleObjects. А в управляющем приложении открываеш эти 3 заранее тебе известных обекта и когда нужно посылаеш сигнал одному из них . Сервис будет обрабатывать по одному из событий делать определенные действия.
2 способ. Используй представление файла созданного с уникальным именем с помощью CreateFileMapping и один Event. Так же открываеш его хэндл управляемым приложением и пишеш туда команды и данные а Eventу отсылаеш сигнал о приеме данных.
3 способ.Открываеш в сервисе определенный тобой локальный соккет и ждеш команд. Управляющее приложение так же его открывает и шлет туда команды.
4 способ. С помощью Pipe созданных CreatePipe
И т.д.

335
10 сентября 2005 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by vitaly2003s

4 способ. С помощью Pipe созданных CreatePipe



это я так понимаю NamedPipes?
А как с ним работать, может есть ссылки или примеры?

406
10 сентября 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by enola
это я так понимаю NamedPipes?
А как с ним работать, может есть ссылки или примеры?


Нет это unnamed pipe а для а для named pipe используют CreateNamedPipe смотри пример здесь:
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnarw98bk/html/thenamedpipedemomultiplecommunicationchannels.asp

335
12 сентября 2005 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by vitaly2003s
Нет это unnamed pipe а для а для named pipe используют CreateNamedPipe смотри пример здесь:
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnarw98bk/html/thenamedpipedemomultiplecommunicationchannels.asp



млин, что-то опять все не просто :) а попроще технологии нет?
а случаем вот на это "unnamed pipe" нет примеров или статей?

335
12 сентября 2005 года
enola
379 / / 25.01.2005
решил вообщем так:
есть управляющая команда SERVICE_CONTROL_PARAMCHANGE у меня в службе на нее ничего нет, просто не нужно, ну я туда в обработчик и засунул свой код :)

вот правда наверное не совсем правильно это.
406
12 сентября 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by enola
решил вообщем так:
есть управляющая команда SERVICE_CONTROL_PARAMCHANGE у меня в службе на нее ничего нет, просто не нужно, ну я туда в обработчик и засунул свой код :)

вот правда наверное не совсем правильно это.



Почитай получше MSDN у тебя ведь для ControlService кроме существующих кодов управления есть еще свободные значения кодов в пределах от 128 до 256. Вот и вешай на них свои обработчики. типа:
#define SERVICE_CONTROL_MYEVENT_1 128
#define SERVICE_CONTROL_MYEVENT_2 129
... и т.д
и затем
ControlService(hservice,SERVICE_CONTROL_MYEVENT_1,...

335
12 сентября 2005 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by vitaly2003s
Почитай получше MSDN у тебя ведь для ControlService кроме существующих кодов управления есть еще свободные значения кодов в пределах от 128 до 256. Вот и вешай на них свои обработчики. типа:
#define SERVICE_CONTROL_MYEVENT_1 128
#define SERVICE_CONTROL_MYEVENT_2 129
... и т.д
и затем
ControlService(hservice,SERVICE_CONTROL_MYEVENT_1,...



спасибо, уже так сделал, просто времени скинуть на форум не было.
А как выше написал не подходит, т.к. под юзером правов не хватает :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог