Здравствуйте, Vladimyr, Вы писали:
V>В общем, подробности такие: если у сервиса нет формы,
V>то он переживает процедуру логоффа, а если есть — форма закрывается,
V>и вместе с ней мой сервис. (Сбоев никаких нет.)
Вот что происходит, когда пытаются писать системные компоненты по типу обычных юзерских аппликух
Начнем с того, что сервис изначально не предназначен для того, чтобы иметь окна и взаимодействовать с десктопом. Правильный сервис работает сам по себе, и с юзером взаимодействует через шлюзовые приложения, запускаемые в сеансе юзера. Но для упрощения и экономии сервисам разрешено иметь окна и работать с десктопом напрямую, но при этом они должны принимать меры, чтобы с ними не поступили, как с обычными приложениями. В частности, при logoff всем окнам верхнего уровня шлется сообщение WM_ENDSESSION, которое в DefWindowProc закономерно трансформируется в WM_QUIT. То же самое, кстати, должно происходить и при обычном закрывании окна.
Нужно перехватывать сообщения о закрытии окна и завершении сеанса, и не давать им завершать thread. Либо, действительно, работать с окном в отдельном thread'е, который будет завершаться.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>