WM_QUERYENDSESSION mensagem
A mensagem WM_QUERYENDSESSION é enviada quando o usuário opta por encerrar a sessão ou quando um aplicativo chama uma das funções de desligamento do sistema. Se qualquer aplicativo retornar zero, a sessão não será encerrada. O sistema para de enviar mensagens WM_QUERYENDSESSION assim que um aplicativo retorna zero.
Depois de processar essa mensagem, o sistema envia a mensagem WM_ENDSESSION com o parâmetro wParam definido para os resultados da mensagem WM_QUERYENDSESSION .
Uma janela recebe essa mensagem por meio da função WindowProc.
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // not used
LPARAM lParam // logoff option
);
Parâmetros
-
hwnd
-
Um identificador para a janela.
-
uMsg
-
O identificador WM_QUERYENDSESSION .
-
wParam
-
Esse parâmetro é reservado para uso futuro.
-
lParam
-
Esse parâmetro pode usar um dos valores a seguir. Se esse parâmetro for 0, o sistema será desligado ou reiniciado (não é possível determinar qual evento está ocorrendo).
Valor Significado - ENDSESSION_CLOSEAPP
- 0x00000001
O aplicativo está usando um arquivo que deve ser substituído, o sistema está sendo atendido ou os recursos do sistema estão esgotados. Para obter mais informações, consulte Diretrizes para aplicativos. - ENDSESSION_CRITICAL
- 0x40000000
O aplicativo é forçado a desligar. - ENDSESSION_LOGOFF
- 0x80000000
O usuário está fazendo logoff. Para obter mais informações, consulte Log Off. Observe que esse parâmetro é uma máscara de bits. Para testar esse valor, use uma operação bit a bit; não teste a igualdade.
Retornar valor
Os aplicativos devem respeitar as intenções do usuário e retornar TRUE. Por padrão, a função DefWindowProc retorna TRUE para essa mensagem.
Se desligar corromper o sistema ou a mídia que está sendo queimada, o aplicativo poderá retornar FALSE. No entanto, é uma boa prática respeitar as ações do usuário.
Comentários
Quando um aplicativo retorna TRUE para essa mensagem, ele recebe a mensagem WM_ENDSESSION , independentemente de como os outros aplicativos respondem à mensagem WM_QUERYENDSESSION . Cada aplicativo deve retornar TRUE ou FALSE imediatamente ao receber essa mensagem e adiar todas as operações de limpeza até receber a mensagem WM_ENDSESSION .
Os aplicativos podem exibir uma interface do usuário solicitando ao usuário informações no desligamento, no entanto, não é recomendável. Após cinco segundos, o sistema exibe informações sobre os aplicativos que estão impedindo o desligamento e permite que o usuário as encerre. Por exemplo, o Windows XP exibe uma caixa de diálogo, enquanto o Windows Vista exibe uma tela inteira com informações adicionais sobre os aplicativos que bloqueiam o desligamento. Se o aplicativo precisar bloquear ou adiar o desligamento do sistema, use a função ShutdownBlockReasonCreate . Para obter mais informações, confira Alterações de desligamento do Windows Vista.
Os aplicativos de console podem usar a função SetConsoleCtrlHandler para receber notificação de desligamento.
Os aplicativos de serviço podem usar a função RegisterServiceCtrlHandlerEx para receber notificações de desligamento em uma rotina de manipulador.
Exemplos
Para obter um exemplo, consulte Log Off.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows XP [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte |
Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Cabeçalho |
|
Confira também