防止计算机在程序运行时进入睡眠/待机/休眠状态



我尝试了这些代码,但没有工作。

我使用的是Windows 10和VS 2019(VB.NET(。

Imports System.Runtime.InteropServices
Public Class Form1
<FlagsAttribute()> _
Public Enum EXECUTION_STATE As UInteger
ES_SYSTEM_REQUIRED = &H1
ES_DISPLAY_REQUIRED = &H2
ES_CONTINUOUS = &H80000000UI
End Enum
<DllImport("Kernel32.DLL", CharSet:=CharSet.Auto, SetLastError:=True)> _
Private Shared Function SetThreadExecutionState(ByVal state As EXECUTION_STATE) As EXECUTION_STATE
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SetThreadExecutionState(EXECUTION_STATE.ES_SYSTEM_REQUIRED)
End Sub
End Class

它什么也没显示,我的电脑仍然处于睡眠状态。

您还需要指定ES_CONTINUOUS,否则只能重置一次空闲计时器。

根据文档:

在不ES_CONTINUOUS的情况下调用 SetThreadExecutionState 只是重置空闲计时器;要使显示器或系统保持工作状态,线程必须定期调用SetThreadExecutionState

SetThreadExecutionState(EXECUTION_STATE.ES_SYSTEM_REQUIRED Or EXECUTION_STATE.ES_CONTINUOUS)

如果您希望稍后撤消此操作并使系统能够再次进入睡眠状态,请调用该函数并仅指定ES_CONTINUOUS

最新更新