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 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 |