![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отловить завершение работы Windows из под сервиса? [D6, WinXP]
mx © (2007-10-16 09:44:00)Подскажите если кто знает, как при завершении работы остановить свой собственный сервис.
Проблема такая: сервис является клиентской частью программы и постоянно посылает сообщения серверной части через определенный порт. Все работает замечательно, кроме момента завершения работы Windows. Windows не может завершить работу при запущенном сервисе.
Заранее Всем спасибо.
mx (2007-10-16 14:53:00) [1]я в принципе почти разобрался из-за чего сервис не выгружается...
как мне кажется дело в драйвере, который он пытается выгрузить вместе с собой., хотя возможно я ошибаюсь...
буду разбираться дальше
Сергей М. (2007-10-16 14:05:00) [2]Подозреваю что речь на самом деле идет об обычном приложении, запуздырившим иконку в трей и посему гордо именующем себя "сервисом")
Dmitry S (2007-10-16 13:33:00) [3]А что, завершения не произойдет, если сервис откажется останавливаться?
Сергей М. (2007-10-16 11:04:00) [4]procedure TMyService.MyServiceStop(Sender: TService; var Stopped: Boolean);
begin
Stopped := True;
end;
mx (2007-10-16 10:54:00) [5]
> Сергей М. © (16.10.07 10:46) [3]
> Поэтому Windows подает сервису команду SERVICE_CONTROL_STOP,
> на которую твой сервис должен немедленно отреагировать
> и завершить свою работу.
Если не сложно, дай пожалуйста маленький кусочек кода
Сергей М. (2007-10-16 10:46:00) [6]
> Windows не может завершить работу при запущенном сервисе
Поэтому Windows подает сервису команду SERVICE_CONTROL_STOP, на которую твой сервис должен немедленно отреагировать и завершить свою работу.
mx (2007-10-16 10:28:00) [7]пробывал так, не получилось поймать момент :(
private
procedure WCL(var Message:TWMQueryEndSession); message WM_QUERYENDSESSION;
procedure TSclient.WCL(var Message: twmqueryendsession);
begin
message.result:=1;
message.msg:=wm_endsession;
{здесь завершаю сервис}
end;
tesseract (2007-10-16 10:14:00) [8]Обрабатывать WM_QUERYENSESSION. lParam - ноль в случае завершение работы.