123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using System;
- using System.Runtime.InteropServices;
- namespace MediaBrowser.ServerApplication.Native
- {
- /// <summary>
- /// Class NativeApp
- /// </summary>
- public static class Standby
- {
- public static void PreventSleepAndMonitorOff()
- {
- NativeMethods.SetThreadExecutionState(NativeMethods.ES_CONTINUOUS | NativeMethods.ES_SYSTEM_REQUIRED | NativeMethods.ES_DISPLAY_REQUIRED);
- }
- public static void PreventSleep()
- {
- NativeMethods.SetThreadExecutionState(NativeMethods.ES_CONTINUOUS | NativeMethods.ES_SYSTEM_REQUIRED);
- }
- // Clear EXECUTION_STATE flags to allow the system to sleep and turn off monitor normally
- public static void AllowSleep()
- {
- NativeMethods.SetThreadExecutionState(NativeMethods.ES_CONTINUOUS);
- }
- internal static class NativeMethods
- {
- // Import SetThreadExecutionState Win32 API and necessary flags
- [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
- public static extern uint SetThreadExecutionState(uint esFlags);
- public const uint ES_CONTINUOUS = 0x80000000;
- public const uint ES_SYSTEM_REQUIRED = 0x00000001;
- public const uint ES_DISPLAY_REQUIRED = 0x00000002;
- }
- [Flags]
- internal enum EXECUTION_STATE : uint
- {
- ES_NONE = 0,
- ES_SYSTEM_REQUIRED = 0x00000001,
- ES_DISPLAY_REQUIRED = 0x00000002,
- ES_USER_PRESENT = 0x00000004,
- ES_AWAYMODE_REQUIRED = 0x00000040,
- ES_CONTINUOUS = 0x80000000
- }
- }
- }
|