Событие выхода из Windows c ++ - PullRequest
       0

Событие выхода из Windows c ++

5 голосов
/ 08 августа 2010

Мне нужно отловить событие выхода из системы Windows, я использую C ++.Я не знаю, с чего начать поиск,

спасибо за любую помощь,

Дани.

Ответы [ 4 ]

8 голосов
/ 08 августа 2010

В консольном приложении вы можете зарегистрировать обратный вызов (SetConsoleCtrlHandler, CTRL_LOGOFF_EVENT).

В приложении цикла сообщений вы можете перехватывать определенные сообщения (WM_QUERYENDSESSION, WM_ENDSESSION).

См. Выход из системы (Windows) в MSDN.

4 голосов
/ 08 августа 2010

WM_QUERYENDSESSION и WM_ENDSESSION , скорее всего, вы ищете.

1 голос
/ 19 августа 2010

Вы можете использовать OpenInputDesktop MSDN

Во время выхода из системы Input Desktop недоступен для пользователя и функция возвращает NULL.

ex: HDESK hDesk = OpenInputDesktop(0, FALSE, READ_CONTROL);

if (! HDesk) - во время выхода из системы ... - else {--normal state-- CloseHandle (hDesk);}

В Windows Vista & 7 нажатие клавиш CTRL + ALT + DELETE также приводит к недоступности рабочего стола пользователя.

1 голос
/ 08 августа 2010

Я считаю, что "правильный" способ - это прослушивание события WMI.

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/0c1bded8-0cce-4260-bd28-4b4ffce0d27d

Отказ от ответственности: я сам не пробовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...