This question already has an answer here:
Disabling Screen Saver and Power Options in C#

(1个答案)


已关闭6年。




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

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

最佳答案

不建议应用程序更改电源设置-这是用户的首选项,应该按照他们认为合适的方式进行操作。应用程序可以通知系统它不需要进入休眠状态,因为它正在执行不需要用户交互的操作。

此处详细介绍了系统将进入休眠的标准:https://msdn.microsoft.com/en-us/library/windows/desktop/aa373233(v=vs.85).aspx。这详细说明了应用程序可以调用 native 函数 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);

关于c# - 如何防止Windows操作系统进入休眠模式-.Net,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28751192/

10-08 21:11