我正在用 C# 编写一个播放电影的应用程序。我需要弄清楚如何使用 C# 禁用屏幕保护程序和电源选项。
我知道 Windows SDK API 有一个名为 SetThreadExecutionState() 的函数可以用来执行此操作,但是,我不知道是否有更好的方法来执行此操作。如果没有,我如何将此函数合并到 C# 中?
我正在用 C# 编写一个播放电影的应用程序。我需要弄清楚如何使用 C# 禁用屏幕保护程序和电源选项。
我知道 Windows SDK API 有一个名为 SetThreadExecutionState() 的函数可以用来执行此操作,但是,我不知道是否有更好的方法来执行此操作。如果没有,我如何将此函数合并到 C# 中?
不确定是否有更好的 .NET 解决方案,但您可以通过以下方式使用该 API:
所需用途:
using System.Runtime.InteropServices;
P/调用:
public const uint ES_CONTINUOUS = 0x80000000;
public const uint ES_SYSTEM_REQUIRED = 0x00000001;
public const uint ES_DISPLAY_REQUIRED = 0x00000002;
[DllImport("kernel32.dll", SetLastError = true)]
public static extern uint SetThreadExecutionState([In] uint esFlags);
然后通过以下方式禁用屏幕保护程序:
SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED);
Finnaly 通过将执行状态重置回原始值来启用屏幕保护程序:
SetThreadExecutionState(ES_CONTINUOUS);
请注意,在我的示例中,我只是随机选择了一个标志。您需要组合正确的标志来获得您想要的特定行为。您将在 MSDN 上找到标志的描述。