Desligar

Há três maneiras de um aplicativo desligar computadores locais ou remotos:

  • desligar o sistema
  • desligar o sistema e reiniciá-lo
  • desligue o aplicativo, desligue e reinicie o sistema e reinicie todos os aplicativos que foram registrados para reinicialização

Para desligar o sistema, use a função ExitWindowsEx com o sinalizador EWX_SHUTDOWN. Para obter um exemplo, consulte Como desligar o sistema. Para desligar e reiniciar o sistema, use o sinalizador EWX_REBOOT. Para reiniciar todos os aplicativos que foram registrados para reinicialização usando a função RegisterApplicationRestart , use o sinalizador EXW_RESTARTAPPS.

As funções InitiateShutdown, InitiateSystemShutdown e InitiateSystemShutdownEx iniciam um temporizador e exibem uma caixa de diálogo que solicita que o usuário faça logoff. Enquanto essa caixa de diálogo é exibida, a função AbortSystemShutdown pode parar o temporizador e impedir que o computador seja desligado. No entanto, se o temporizador expirar, o computador será desligado. Essas funções também podem reiniciar o computador após uma operação de desligamento. Para obter mais informações, consulte Exibindo a caixa de diálogo Desligamento.

Notificações de desligamento

Aplicativos com uma janela e fila de mensagens recebem notificações de desligamento por meio do WM_QUERYENDSESSION e mensagens de WM_ENDSESSION . Esses aplicativos devem retornar TRUE para indicar que podem ser encerrados. Os aplicativos não devem bloquear o desligamento do sistema, a menos que seja absolutamente necessário. Os aplicativos devem executar qualquer limpeza necessária durante o processamento WM_ENDSESSION. Aplicativos que têm dados não salvos podem salvar os dados em um local temporário e restaurá-los na próxima vez que o aplicativo for iniciado. É recomendável que os aplicativos salvem seus dados e estado com frequência; por exemplo, salve automaticamente os dados entre as operações de salvamento iniciadas pelo usuário para reduzir a quantidade de dados a serem salvos no desligamento.

Os aplicativos de console recebem notificações de desligamento em suas rotinas de manipulador. Para registrar um manipulador de console, use a função SetConsoleCtrlHandler .

Os aplicativos de serviço recebem notificações de desligamento em suas rotinas de manipulador. Para registrar um manipulador de controle de serviço, use a função RegisterServiceCtrlHandlerEx .

Bloqueio de desligamento

Se um aplicativo precisar bloquear um possível desligamento do sistema, ele poderá chamar a função ShutdownBlockReasonCreate . O chamador fornece uma cadeia de caracteres de motivo que será exibida para o usuário. A cadeia de caracteres de motivo deve ser curta e clara, fornecendo ao usuário as informações necessárias para decidir se deseja continuar desligando o sistema.

Como desligar o sistema