Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中禁用屏幕保护程序和电源选项#_C#_Screensaver_Winapi - Fatal编程技术网

C# 在C中禁用屏幕保护程序和电源选项#

C# 在C中禁用屏幕保护程序和电源选项#,c#,screensaver,winapi,C#,Screensaver,Winapi,我正在用C语言编写一个应用程序,它可以播放一部电影。我需要弄清楚如何使用C#禁用屏幕保护程序和电源选项 我知道Windows SDK API有一个名为SetThreadExecutionState()的函数,可以用来执行此操作,但我不知道是否有更好的方法。如果没有,我如何将此函数合并到C#?不确定是否有更好的.NET解决方案,但以下是如何使用该API: 所需用途: using System.Runtime.InteropServices; p/S: public const uint ES_C

我正在用C语言编写一个应用程序,它可以播放一部电影。我需要弄清楚如何使用C#禁用屏幕保护程序和电源选项


我知道Windows SDK API有一个名为SetThreadExecutionState()的函数,可以用来执行此操作,但我不知道是否有更好的方法。如果没有,我如何将此函数合并到C#?

不确定是否有更好的.NET解决方案,但以下是如何使用该API:

所需用途:

using System.Runtime.InteropServices;
p/S:

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);
最后,通过将执行状态重置回原始值来启用屏幕保护程序:

SetThreadExecutionState(ES_CONTINUOUS);

注意,在我的示例中,我只是随机选择了一个标志。您需要组合正确的标志以获得所需的特定行为。您将发现。

如果您只是阻止屏幕保护程序/电源选项激活(例如,每N秒向操作系统发送一次按键),该怎么办?我在这里找到了一个解决方案:是。我在C中发现了一个非常好的类:SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS | EXECUTION_STATE.ES_DISPLAY_REQUIRED | EXECUTION_STATE.ES_SYSTEM_REQUIRED);-精益求精win10@user1005462
ES\u系统所需的
uint
值是多少?因此,我只想为自己制作应用程序,这不允许pc进入睡眠状态。一个大按钮“不要睡觉”,然后一个大按钮来禁用它。什么是允许电脑睡觉的值?可在此处找到标志值: