Здравствуйте, okman, спасибо за ответ. Вы писали:
O>Да, в MSDN неявно указывается, что сообщения типа WTS_SESSION_LOGOFF приходят уже O>после того, как соответствующее событие произошло, то есть это post-callback.
Согласен. Я это наковырял уже опытным путем. Но я не понимаю почему SetConsoleCtrlHandler и CTRL_LOGOFF_EVENT не работают.
Ведб в МСДН английским по белому написано:
"Note that this signal is received only by services. Interactive applications are terminated at logoff, so they are not present when the system sends this signal."
Хотя, с другой стороны, этот вариант может тоже оказаться post_callback, если "they are not present when the system sends this signal".
O>А почему, интересно ? O>Запустить скрытый процесс в сессии пользователя, ждать WM_ENDSESSION... O>Можно еще c SetProcessShutdownParameters поиграться, наверное, чтобы процесс O>получал это сообщение по возможности раньше остальных. Чем не вариант ?
Потому что дополнительный exe, который еще и антивирь какой-нить ограничит (Каспер вон пости про все подряд спрашивает), или юзвер грохнет ненароком или еще чего.
А "некорректный" (без записи определенных ключеф в реестре пользователя) выход обернется бякой для пользователя, для продукта и большой шишкой для меня. =)
Этот вариант резервный, так сказать. Все еще надеюсь что-нить придумать, или кто-нить что-нить подскажет.
O>Можно попробовать добавить событие в системный планировщик.
Не пробовал. А что туда можно воткнуть?
O>Или написать Winlogon Notification Package (для систем, предшествующих Windows Vista).
Сейчас рынок заполнен Win 7 в основном, так что тоже не вариант. Смотрел я в эту сторону и был глубоко разочарован увидев "not supported from Vista".