WM_QUERYENDSESSION messaggio
Il messaggio WM_QUERYENDSESSION viene inviato quando l'utente sceglie di terminare la sessione o quando un'applicazione chiama una delle funzioni di arresto del sistema. Se un'applicazione restituisce zero, la sessione non viene terminata. Il sistema arresta l'invio di messaggi WM_QUERYENDSESSION non appena un'applicazione restituisce zero.
Dopo l'elaborazione di questo messaggio, il sistema invia il messaggio di WM_ENDSESSION con il parametro wParam impostato sui risultati del messaggio di WM_QUERYENDSESSION .
Una finestra riceve questo messaggio tramite la relativa funzione WindowProc .
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // not used
LPARAM lParam // logoff option
);
Parametri
-
Hwnd
-
Handle nella finestra.
-
Umsg
-
Identificatore WM_QUERYENDSESSION .
-
wParam
-
Questo parametro è riservato per usi futuri.
-
lParam
-
Questo parametro può essere uno o più dei valori seguenti. Se questo parametro è 0, il sistema sta arrestando o riavviando (non è possibile determinare quale evento si sta verificando).
Valore Significato - ENDSESSION_CLOSEAPP
- 0x00000001
L'applicazione usa un file che deve essere sostituito, il sistema viene sottoposto a servizio o le risorse di sistema vengono esaurite. Per altre informazioni, vedere Linee guida per le applicazioni. - ENDSESSION_CRITICAL
- 0x40000000
L'applicazione è costretta ad arrestare. - ENDSESSION_LOGOFF
- 0x80000000
L'utente sta disconnettendo. Per altre informazioni, vedere Disconnessione. Si noti che questo parametro è una maschera di bit. Per testare questo valore, usare un'operazione con bit; non testare l'uguaglianza.
Valore restituito
Le applicazioni devono rispettare le intenzioni dell'utente e restituire TRUE. Per impostazione predefinita, la funzione DefWindowProc restituisce TRUE per questo messaggio.
Se l'arresto potrebbe danneggiare il sistema o il supporto che viene bruciato, l'applicazione può restituire FALSE. Tuttavia, è consigliabile rispettare le azioni dell'utente.
Commenti
Quando un'applicazione restituisce TRUE per questo messaggio, riceve il messaggio di WM_ENDSESSION , indipendentemente dal modo in cui le altre applicazioni rispondono al messaggio di WM_QUERYENDSESSION . Ogni applicazione deve restituire TRUE o FALSE immediatamente dopo aver ricevuto questo messaggio e rinviare tutte le operazioni di pulizia fino a quando non riceve il messaggio di WM_ENDSESSION .
Le applicazioni possono visualizzare un'interfaccia utente che richiede informazioni all'arresto, ma non è consigliabile. Dopo cinque secondi, il sistema visualizza informazioni sulle applicazioni che impediscono l'arresto e consente all'utente di terminarli. Ad esempio, Windows XP visualizza una finestra di dialogo, mentre Windows Vista visualizza una schermata intera con informazioni aggiuntive sul blocco dell'arresto delle applicazioni. Se l'applicazione deve bloccare o rinviare l'arresto del sistema, usare la funzione ShutdownBlockReasonCreate . Per altre informazioni, vedere Arresta modifiche per Windows Vista.
Le applicazioni console possono usare la funzione SetConsoleCtrlHandler per ricevere la notifica di arresto.
Le applicazioni di servizio possono usare la funzione RegisterServiceCtrlHandlerEx per ricevere notifiche di arresto in una routine del gestore.
Esempio
Per un esempio, vedere Disconnessione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows XP [app desktop | App UWP] |
Server minimo supportato |
Windows Server 2003 [app desktop | App UWP] |
Intestazione |
|
Vedi anche