C# 防止计算机睡眠
我有一个带有某种媒体播放功能的应用程序,我不希望应用程序运行时计算机处于睡眠状态。我四处搜索,发现这可以通过P/Invoke实现 显示器也不应关闭,计算机也不应进入睡眠状态。因此,我做了以下测试:C# 防止计算机睡眠,c#,pinvoke,C#,Pinvoke,我有一个带有某种媒体播放功能的应用程序,我不希望应用程序运行时计算机处于睡眠状态。我四处搜索,发现这可以通过P/Invoke实现 显示器也不应关闭,计算机也不应进入睡眠状态。因此,我做了以下测试: b.Click += (x, y) => { SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS | EXECUTION_STATE.ES_AWAYMODE_REQUI
b.Click += (x, y) =>
{
SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS | EXECUTION_STATE.ES_AWAYMODE_REQUIRED);
Debug.WriteLine("Power line executed");
};
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
[FlagsAttribute]
public enum EXECUTION_STATE : uint
{
ES_AWAYMODE_REQUIRED = 0x00000040,
ES_CONTINUOUS = 0x80000000,
ES_DISPLAY_REQUIRED = 0x00000002,
ES_SYSTEM_REQUIRED = 0x00000001
}
然而,过了一段时间,电脑仍然进入睡眠状态。这里缺少什么?XP不支持离开模式。改用连续显示系统。
要启用离开模式,应用程序同时使用ES_AWAYMODE_REQUIRED和ES_CONTINUOUS;要禁用离开模式,应用程序将调用SetThreadExecutionState,并使用ES_CONTINUOUS清除ES_AWAYMODE_REQUIRED。启用“离开”模式时,任何会使计算机进入睡眠状态的操作都会将其置于“离开”模式。当系统继续执行不需要用户输入的任务时,计算机似乎正在休眠离开模式不影响睡眠空闲计时器;为了防止系统在计时器过期时进入睡眠状态,应用程序还必须设置ES_system_所需的值您可能会在SuperUser获得更好的答案。@David,他正在寻找一个编程解决方案。可能重复的问题不重要,用户运行的内容很重要。如果您仍然有问题,请在“控制面板+电源”中查找供应商添加的内容,并将其搞乱。我认为本页仅提及使用
连续
和显示所需的
标志的监视器断电。这是正确的还是连续
和显示要求
也会阻止睡眠?对我来说:这不起作用,电脑仍处于休眠状态,我使用的是带有默认电源设置的标准家庭操作系统。