Comment puis-je empêcher le système d’exploitation Windows d’entrer en mode veille – .Net

En utilisant C #, comment puis-je empêcher le système d’exploitation Windows d’entrer en mode veille?

Je sais que je peux désactiver le mode veille, c’est ce que je fais maintenant. Cette question concerne l’empêchement du système d’exploitation de Sleeing lorsqu’un programme est en cours d’exécution. Ensuite, le mode Veille doit être réactivé.

Il est déconseillé à une application de modifier les parameters d’alimentation, ce qui représente une préférence pour l’utilisateur et doit être effectuée à sa guise. Une application peut informer le système qu’elle en a besoin pour ne pas s’endormir, car elle fait quelque chose qui ne nécessite aucune interaction de la part de l’utilisateur.

Les critères de mise en veille du système sont détaillés ici: https://msdn.microsoft.com/en-us/library/windows/desktop/aa373233(v=vs.85).aspx . Ce détail indique qu’une application peut appeler la fonction native SetThreadExecutionState pour informer le système des besoins spécifiques qui affecteront la manière dont le système doit décider de dormir. Si vous souhaitez que l’affichage soit visible quel que soit le manque d’interaction avec l’utilisateur, le paramètre ES_DISPLAY_REQUIRED doit être envoyé à SetThreadExecutionState .

Par exemple:

 public enum EXECUTION_STATE : uint { ES_AWAYMODE_REQUIRED = 0x00000040, ES_CONTINUOUS = 0x80000000, ES_DISPLAY_REQUIRED = 0x00000002, } internal class NativeMethods { [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags); } //... NativeMethods.SetThreadExecutionState(EXECUTION_STATE.ES_DISPLAY_REQUIRED); 

Je pense que vous devriez pouvoir empêcher le système de passer en mode veille en appelant périodiquement SetThreadExecutionState avec le paramètre ES_SYSTEM_REQUIRED.

Cet article pourrait également être utile.