15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Завершение сеанса работы пользователя (Log Off).

Завершить сеанс работы текущего пользователя можно при помощи функции ExitWindows. Предварительно, все приложения должны завершить свою работу. Если какое-нибудь из приложений при обработке сообщения WM_QUERYENDSESSION вернёт FALSE, то сеанс работы пользователя не будет завершён. Таким образом, если в Вашем приложении есть обработчик сообщения WM_QUERYENDSESSION, то Вы можете прекратить операцию завершения сеанса, даже если запрос на завершение сеанса был отправлен самой системой.

 

Следующий пример показывает, как завершить сеанс работы текущего пользователя. Также в примере демонстрируется, как приложение может предотвратить операцию завершения сеанса пользователя.

// Завершаем сеанс работы текущего пользователя.

ExitWindows(0, 0);


// Обрабатываем сообщение в оконной процедуре приложения.

case WM_QUERYENDSESSION:
{
    int r;
    r = MessageBox(NULL, "Shut down?","WM_QUERYENDSESSION", MB_YESNO);

    // Возращаем TRUE, если пользователь согласен, иначе FALSE.

    return r == IDYES;
    break;
}