Fonction SetThreadExecutionState (winbase.h)

Permet à une application d’informer le système qu’elle est en cours d’utilisation, empêchant ainsi le système d’entrer en veille ou de désactiver l’affichage pendant l’exécution de l’application.

Syntaxe

EXECUTION_STATE SetThreadExecutionState(
  [in] EXECUTION_STATE esFlags
);

Paramètres

[in] esFlags

Exigences d’exécution du thread. Ce paramètre peut prendre une ou plusieurs des valeurs suivantes.

Valeur Signification
ES_AWAYMODE_REQUIRED
0x00000040
Active le mode d’absence. Cette valeur doit être spécifiée avec ES_CONTINUOUS.

Le mode d’absence doit être utilisé uniquement par les applications d’enregistrement multimédia et de distribution multimédia qui doivent effectuer un traitement en arrière-plan critique sur les ordinateurs de bureau pendant que l’ordinateur semble en veille. Consultez la section Notes.

ES_CONTINUOUS
0x80000000
Informe le système que l’état en cours de définition doit rester en vigueur jusqu’à ce que l’appel suivant qui utilise ES_CONTINUOUS et l’un des autres indicateurs d’état soit effacé.
ES_DISPLAY_REQUIRED
0x00000002
Force l’affichage à être activé en réinitialisant le minuteur d’inactivité d’affichage.
ES_SYSTEM_REQUIRED
0x00000001
Force le système à être à l’état opérationnel en réinitialisant le minuteur d’inactivité du système.
ES_USER_PRESENT
0x00000004
Cette valeur n’est pas prise en charge. Si ES_USER_PRESENT est combiné avec d’autres valeurs esFlags , l’appel échoue et aucun des états spécifiés n’est défini.

Valeur retournée

Si la fonction réussit, la valeur de retour est l’état d’exécution du thread précédent.

Si la fonction échoue, la valeur de retour est NULL.

Remarques

Le système détecte automatiquement les activités telles que l’entrée locale du clavier ou de la souris, l’activité du serveur et le changement de focus de fenêtre. Les activités qui ne sont pas détectées automatiquement incluent l’activité du disque ou du processeur et l’affichage vidéo.

L’appel de SetThreadExecutionState sans ES_CONTINUOUS réinitialise simplement le minuteur d’inactivité ; pour que l’affichage ou le système reste à l’état opérationnel, le thread doit appeler Régulièrement SetThreadExecutionState.

Pour s’exécuter correctement sur un ordinateur alimenté, les applications telles que les serveurs de télécopie, les répondeurs, les agents de sauvegarde et les applications de gestion réseau doivent utiliser à la fois ES_SYSTEM_REQUIRED et ES_CONTINUOUS quand elles traitent des événements. Les applications multimédias, telles que les lecteurs vidéo et les applications de présentation, doivent utiliser ES_DISPLAY_REQUIRED lorsqu’elles affichent des vidéos pendant de longues périodes sans intervention de l’utilisateur. Les applications telles que les processeurs de texte, les feuilles de calcul, les navigateurs et les jeux n’ont pas besoin d’appeler SetThreadExecutionState.

La valeur ES_AWAYMODE_REQUIRED ne doit être utilisée que lorsque cela est absolument nécessaire par les applications multimédias qui nécessitent que le système effectue des tâches en arrière-plan, telles que l’enregistrement de contenu télévisuel ou la diffusion multimédia en continu sur d’autres appareils pendant que le système semble en veille. Les applications qui ne nécessitent pas de traitement en arrière-plan critique ou qui s’exécutent sur des ordinateurs portables ne doivent pas activer le mode absent, car cela empêche le système d’économiser l’alimentation en entrant une vraie mise en veille.

Pour activer le mode absent, une application utilise à la fois ES_AWAYMODE_REQUIRED et ES_CONTINUOUS ; pour désactiver le mode absent, une application appelle SetThreadExecutionState avec ES_CONTINUOUS et efface ES_AWAYMODE_REQUIRED. Lorsque le mode d’absence est activé, toute opération qui met l’ordinateur en veille le met en mode absent à la place. L’ordinateur semble être en veille pendant que le système continue d’effectuer des tâches qui ne nécessitent pas d’entrée utilisateur. Le mode Absent n’affecte pas le minuteur d’inactivité en veille ; pour empêcher le système d’entrer en veille à l’expiration du minuteur, une application doit également définir la valeur ES_SYSTEM_REQUIRED .

La fonction SetThreadExecutionState ne peut pas être utilisée pour empêcher l’utilisateur de mettre l’ordinateur en veille. Les applications doivent respecter le fait que l’utilisateur attend un certain comportement lorsqu’il ferme le couvercle de son ordinateur portable ou qu’il appuie sur le bouton d’alimentation.

Cette fonction n’empêche pas l’économiseur d’écran de s’exécuter.

Exemples

// 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);

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winbase.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

Fonctions de gestion de l’alimentation

SetSuspendState

SetSystemPowerState

WM_POWERBROADCAST