Spegnimento
Esistono tre modi per un'applicazione di spegnere i computer locali o remoti:
- spegnere il sistema
- arrestare il sistema e riavviarlo
- arrestare l'applicazione, arrestare e riavviare il sistema e riavviare tutte le applicazioni registrate per il riavvio
Per arrestare il sistema, usare la funzioneExitWindowsExcon il flag EWX_SHUTDOWN. Per un esempio, vedere "Come arrestare il sistema". Per arrestare e riavviare il sistema, usare il flag EWX_REBOOT. Per riavviare tutte le applicazioni registrate per il riavvio usando la funzione RegisterApplicationRestart, usare il flag EXW_RESTARTAPPS.
Il InitiateShutdown, InitiateSystemShutdown, e InitiateSystemShutdownEx avviano un timer e visualizzano una finestra di dialogo che richiede all'utente di disconnettersi. Mentre viene visualizzata questa finestra di dialogo, la funzione AbortSystemShutdown può arrestare il timer e impedire l'arresto del computer. Tuttavia, se il timer scade, il computer viene arrestato. Queste funzioni possono anche riavviare il computer dopo un'operazione di arresto. Per altre informazioni, vedere Visualizzare la finestra di dialogo Spegnimento.
Notifiche di arresto
Le applicazioni con una finestra e una coda di messaggi ricevono notifiche di arresto tramite i messaggi WM_QUERYENDSESSION e WM_ENDSESSION. Queste applicazioni devono restituire TRUE per indicare che possono essere terminate. Le applicazioni non devono bloccare l'arresto del sistema a meno che non sia assolutamente necessario. Le applicazioni devono eseguire qualsiasi pulizia necessaria durante l'elaborazione WM_ENDSESSION. Le applicazioni con dati non salvati potrebbero salvare i dati in un percorso temporaneo e ripristinarli al successivo avvio dell'applicazione. È consigliabile che le applicazioni salvino spesso i dati e lo stato; Ad esempio, salvare automaticamente i dati tra le operazioni di salvataggio avviate dall'utente per ridurre la quantità di dati da salvare all'arresto.
Le applicazioni console ricevono notifiche di arresto nelle routine del gestore. Per registrare un gestore della console, usare la funzioneSetConsoleCtrlHandler.
Le applicazioni di servizio ricevono notifiche di arresto nelle routine del gestore. Per registrare un gestore di controllo del servizio, usare la funzioneRegisterServiceCtrlHandlerEx.
Blocco dello spegnimento
Se un'applicazione deve bloccare un potenziale arresto del sistema, può chiamare la funzione ShutdownBlockReasonCreate. Il chiamante fornisce una stringa motivo che verrà visualizzata all'utente. La stringa di motivo deve essere breve e chiara, fornendo all'utente le informazioni necessarie per decidere se continuare a arrestare il sistema.
Argomenti correlati