Сообщение Windows для экрана блокировки пользователя - PullRequest
4 голосов
/ 04 марта 2011

Я работаю с Windows-программированием старой школы на C ++, и мне нужно захватить событие в моем WndProc, которое указывает, что пользователь вышел из системы или заблокировал экран.

update (спасибо David Hefernan) Я искал везде, но единственное, что я нашел, это сообщение WM_ENDSESSION - которое не обрабатывает события блокировки экрана.

Кто-нибудь знает, как это делается? Мне нужно применить его к Windows 2000 через Windows XP.

1 Ответ

7 голосов
/ 04 марта 2011

Решение состоит в том, чтобы зарегистрировать для WM_WTSSESSION_CHANGE и ответить на него в своем WndProc.

Согласно документации WM_WTSSESSION_CHANGE, минимумПоддерживаемая ОС - XP.Теперь, поскольку Windows 2000 больше не поддерживается, в документации часто говорится, что XP - это минимум, хотя на самом деле функциональность доступна в более ранних версиях.В этом случае быстрый веб-поиск показывает, что вы можете быть разочарованы.

Чтобы получить уведомление о выходе из сеанса (а не о блокировке экрана), вы должны использовать lParam значение сообщения WM_ENDSESSION.Посмотрите на наличие флага ENDSESSION_LOGOFF.

...