Alterações de desligamento do Windows Vista

A tabela a seguir resume as diferenças entre o desligamento no Windows Vista e no Windows XP.

Recurso Windows XP Windows Vista
Bloqueio do desligamento Os aplicativos podem atrasar a resposta a WM_QUERYENDSESSION por 5 segundos e, em seguida, o sistema permite que o usuário encerre o aplicativo. Aplicativos que retornam TRUE em resposta a WM_QUERYENDSESSION podem atrasar a resposta a WM_ENDSESSION por 5 segundos e, em seguida, o sistema permite que o usuário encerre o aplicativo. Os aplicativos podem atrasar a resposta a WM_QUERYENDSESSION por 5 segundos e, em seguida, o sistema permite que o usuário continue ou cancele o desligamento. Aplicativos que retornam TRUE em resposta a WM_QUERYENDSESSION podem atrasar a resposta a WM_ENDSESSION por 5 segundos e, em seguida, o sistema permite que o usuário continue ou cancele o desligamento.
Cancelando o desligamento Se um aplicativo retornar FALSE em resposta a WM_QUERYENDSESSION, o desligamento será cancelado na maioria dos casos. No entanto, nenhuma interface do usuário é exibida, portanto, o usuário pode não estar ciente de que o desligamento foi cancelado. Se um aplicativo retornar FALSE em resposta a WM_QUERYENDSESSION, ele ainda aparecerá na interface do usuário de desligamento. Observe que o sistema não permite que aplicativos ou aplicativos de console sem uma janela visível cancelem o desligamento. Esses aplicativos serão encerrados automaticamente se não responderem a WM_QUERYENDSESSION ou WM_ENDSESSION dentro de 5 segundos ou se retornarem FALSE em resposta a WM_QUERYENDSESSION.
Desligar interface do usuário O sistema exibe uma caixa de diálogo para cada aplicativo que bloqueia o desligamento. Se o usuário clicar no botão Encerrar Agora , o aplicativo será encerrado. Se o usuário clicar no botão Cancelar , o desligamento será cancelado e o aplicativo continuará sendo executado. O sistema exibe uma interface do usuário de tela inteira que identifica todos os aplicativos que bloqueiam o desligamento e seus motivos para fazer isso (se eles registraram um motivo usando ShutdownBlockReasonCreate).

 

Práticas Recomendadas

  • Os aplicativos não devem bloquear o desligamento. Responda a WM_QUERYENDSESSION o mais rápido possível e adie as atividades de limpeza até processar a mensagem WM_ENDSESSION .
  • Os aplicativos que devem bloquear o desligamento devem usar a nova função ShutdownBlockReasonCreate para registrar uma cadeia de caracteres que explica o motivo para o usuário. O usuário pode decidir se deseja continuar ou cancelar o desligamento.
  • Os aplicativos não podem depender da capacidade de bloquear o desligamento.