Funzione SetThreadExecutionState (winbase.h)

Consente a un'applicazione di informare il sistema che è in uso, impedendo così al sistema di entrare in sospensione o disattivare lo schermo mentre l'applicazione è in esecuzione.

Sintassi

EXECUTION_STATE SetThreadExecutionState(
  [in] EXECUTION_STATE esFlags
);

Parametri

[in] esFlags

Requisiti di esecuzione del thread. Questo parametro può essere uno o più dei valori seguenti.

Valore Significato
ES_AWAYMODE_REQUIRED
0x00000040
Abilita la modalità di distanza. Questo valore deve essere specificato con ES_CONTINUOUS.

La modalità Di distanza deve essere usata solo dalle applicazioni di registrazione multimediale e distribuzione multimediale che devono eseguire l'elaborazione in background critica nei computer desktop mentre il computer sembra essere in sospensione. Vedere la sezione Osservazioni.

ES_CONTINUOUS
0x80000000
Informa il sistema che lo stato impostato deve rimanere attivo fino a quando non viene cancellata la chiamata successiva che utilizza ES_CONTINUOUS e uno degli altri flag di stato.
ES_DISPLAY_REQUIRED
0x00000002
Forza l'attivazione dello schermo reimpostando il timer di inattività dello schermo.
ES_SYSTEM_REQUIRED
0x00000001
Forza che il sistema si trova nello stato di lavoro reimpostando il timer di inattività del sistema.
ES_USER_PRESENT
0x00000004
Questo valore non è supportato. Se ES_USER_PRESENT viene combinato con altri valori esFlags , la chiamata avrà esito negativo e nessuno degli stati specificati verrà impostato.

Valore restituito

Se la funzione ha esito positivo, il valore restituito corrisponde allo stato di esecuzione del thread precedente.

Se la funzione ha esito negativo, il valore restituito è NULL.

Commenti

Il sistema rileva automaticamente attività come l'input della tastiera locale o del mouse, l'attività del server e la modifica dello stato attivo della finestra. Le attività non rilevate automaticamente includono l'attività del disco o della CPU e la visualizzazione video.

Chiamando SetThreadExecutionState senza ES_CONTINUOUS semplicemente reimposta il timer di inattività; per mantenere la visualizzazione o il sistema nello stato di lavoro, il thread deve chiamare periodicamente SetThreadExecutionState .

Per l'esecuzione corretta in un computer gestito dall'alimentazione, applicazioni come server fax, computer di risposta, agenti di backup e applicazioni di gestione di rete devono usare sia ES_SYSTEM_REQUIRED che ES_CONTINUOUS durante l'elaborazione degli eventi. Le applicazioni multimediali, ad esempio i lettori video e le applicazioni di presentazione, devono usare ES_DISPLAY_REQUIRED quando visualizzano video per lunghi periodi di tempo senza input dell'utente. Le applicazioni come word processor, fogli di calcolo, browser e giochi non devono chiamare SetThreadExecutionState.

Il valore ES_AWAYMODE_REQUIRED deve essere usato solo quando è assolutamente necessario dalle applicazioni multimediali che richiedono al sistema di eseguire attività in background, ad esempio la registrazione di contenuti televisivi o lo streaming di contenuti multimediali in altri dispositivi mentre il sistema sembra essere in sospensione. Le applicazioni che non richiedono l'elaborazione in background critica o che vengono eseguite su computer portatili non devono abilitare la modalità di distanza perché impedisce al sistema di conservare l'alimentazione immettendo un vero stato di sospensione.

Per abilitare la modalità away, un'applicazione usa sia ES_AWAYMODE_REQUIRED che ES_CONTINUOUS; per disabilitare la modalità di disattivazione, un'applicazione chiama SetThreadExecutionState con ES_CONTINUOUS e cancella ES_AWAYMODE_REQUIRED. Quando la modalità di disco è abilitata, qualsiasi operazione che metterebbe in sospensione il computer lo mette in modalità non attiva. Il computer sembra essere in sospensione mentre il sistema continua a eseguire attività che non richiedono l'input dell'utente. La modalità Di distanza non influisce sul timer di inattività sospensione; per evitare che il sistema entri in sospensione alla scadenza del timer, un'applicazione deve anche impostare il valore di ES_SYSTEM_REQUIRED .

Non è possibile utilizzare la funzione SetThreadExecutionState per impedire all'utente di sospendere il computer. Le applicazioni devono rispettare che l'utente si aspetta un determinato comportamento quando chiude il coperchio sul computer portatile o preme il pulsante di alimentazione.

Questa funzione non impedisce l'esecuzione dello screen saver.

Esempio

// Television recording is beginning. Enable away mode and prevent
// the sleep idle time-out.
//
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED);

//
// Wait until recording is complete...
//

//
// Clear EXECUTION_STATE flags to disable away mode and allow the system to idle to sleep normally.
//
SetThreadExecutionState(ES_CONTINUOUS);

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Funzioni di risparmio energia

SetSuspendState

SetSystemPowerState

WM_POWERBROADCAST