【问题标题】:How can I prevent Windows OS from entering Sleep mode - .Net [duplicate]如何防止 Windows 操作系统进入睡眠模式 - .Net [重复]
【发布时间】:2015-02-26 19:32:34
【问题描述】:

使用 C#,如何防止 Windows 操作系统进入睡眠模式?

我知道,我可以关闭睡眠模式,这就是我现在要做的。这个问题是关于在程序长时间运行时防止操作系统进入睡眠状态。之后,应重新启用进入睡眠模式。

【问题讨论】:

    标签: c# windows sleep-mode


    【解决方案1】:

    不建议应用程序更改电源设置 - 这是用户的偏好,应该按照他们认为合适的方式进行。应用程序可以通知系统它需要它不要进入睡眠状态,因为它正在做一些不需要用户交互的事情。

    此处详细说明了系统休眠的标准:https://msdn.microsoft.com/en-us/library/windows/desktop/aa373233(v=vs.85).aspx。这详细说明了应用程序可以调用本机函数SetThreadExecutionState 以通知系统特定需求,这将影响系统应如何决定睡眠。如果您需要在缺少用户交互的情况下显示显示,则应将ES_DISPLAY_REQUIRED 参数发送到SetThreadExecutionState

    例如:

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

    【讨论】:

    • 它不适用于 Windows 10 Pro,知道吗?
    【解决方案2】:

    我认为您应该能够通过定期调用SetThreadExecutionState 并使用ES_SYSTEM_REQUIRED 参数来防止系统进入睡眠模式。

    This article 也可能有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      相关资源
      最近更新 更多