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