Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.11;
Скачать: CL | DM;

Вниз

Работа с сервисом   Найти похожие ветки 

 
chum   (2006-03-14 20:16) [0]

Есть такой вопросик: Написана служба, а как отследить выход в спящий (ждущий) режим или продолжение работы операционки после них. Последнее даже лучше.


 
Lucefer   (2006-03-15 23:16) [1]

Создаю сервис, в котором объект TServerSocket порождает потоки для подключаемых клиентов. По окончании обработки эти потоки должны передать некую команду породившему их потоку. Когда то это было нечто вида
PostMessage(Application.MainForm.Handle,
RM_USER_LOGOUT,
Integer(DuplicateStrToPChar(strClientMessage)),
Integer(DuplicateStrToPChar(strClientID)));
-------------------------
Как это правильно сделать теперь? Желательно сделать это именно с помощью механизма сообщений, а не вызовом функции через Synchronize (сильно затормозит работу).


 
Lucefer   (2006-03-15 23:17) [2]

извини. не туда попал... :)


 
chum   (2006-03-16 12:54) [3]

Lucefer
Не страшно.

2ALL

Сам разобрался. Если кому интересно, то вот.

В структуре состояния сервиса (SERVICE_STATUS) в поле dwControlsAccepted указываем, что наш сервис получает сообщения о состоянии питания (power status). Для этого указываем флаг SERVICE_ACCEPT_POWEREVENT.

При этом сервис надо регестрировать функцией RegisterServiceCtrlHandlerEx.

Ну а далее нужно обрабатывать событие SERVICE_CONTROL_POWEREVENT. Подробнее можно узнать в MSDN.


 
Fay ©   (2006-03-17 14:48) [4]

2 chum   (16.03.06 12:54) [3]
> При этом сервис надо регестрировать функцией RegisterServiceCtrlHandlerEx.
Это ещё почему?


 
Eraser ©   (2006-03-17 15:27) [5]


> chum   (16.03.06 12:54) [3]

сервис полностью самописный, т.е. на чистом WinAPI или наследника TService используешь?


 
chum   (2006-03-20 10:19) [6]

2Fay

RegisterServiceCtrlHandlerEx - потому-что только с её использованием регестрируется функция обработки сообщений (в MSDN зовётся HandlerEx), которая может получать сообщения SERVICE_CONTROL_POWEREVENT. Обычная функция (Handler) этого соощения не получает.

2Eraser

сервис полностью самописный, т.е. на чистом WinAPI.  TService не использую.


 
Fay ©   (2006-03-20 14:46) [7]

2 chum   (20.03.06 10:19) [6]
> Обычная функция (Handler) этого соощения не получает
Да, действительно. А я и не заметил.



Страницы: 1 вся ветка

Текущий архив: 2006.06.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
1-1146815899
Layner
2006-05-05 11:58
2006.06.11
Поиск всех возможных комбинаций


2-1148142741
Мурзилка
2006-05-20 20:32
2006.06.11
1) Звук


3-1144835299
RomanH
2006-04-12 13:48
2006.06.11
IBDataSet(удаление, добавление, редактирование)


3-1145269866
Сергей И
2006-04-17 14:31
2006.06.11
Как сохранить запись в БД


2-1148546638
Nver
2006-05-25 12:43
2006.06.11
Иконки в ListBox