分享C#实现系统休眠或静止休眠的方法

本文主要介绍了C#实现系统休眠或静止休眠的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

封装类

用于阻止系统休眠的C#类。以下是代码注释的解释:

  • DllImport("kernel32.dll"):定义了一个API函数,该函数在Windows内核中定义。
  • enum ExecutionFlag : uint:定义了一个枚举类型,其中包含三个标志,分别用于阻止系统休眠、关闭显示器和继续执行。
  • PreventSleep(bool includeDisplay = false):这个方法用于阻止系统休眠,直到线程结束恢复休眠。如果includeDisplay参数为true,则还会阻止关闭显示器。
  • ResotreSleep():这个方法用于恢复系统休眠。

使用了kernel32.dll中的SetThreadExecutionState函数来阻止系统休眠。我们还定义了一个枚举类型ExecutionFlag,用于指定阻止系统休眠的选项。我们可以使用SetThreadExecutionState函数来设置ExecutionFlag标志,以防止系统休眠

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

class SystemSleepManagement

   {

       //定义API函数

       [DllImport("kernel32.dll")]

       static extern uint SetThreadExecutionState(ExecutionFlag flags);

       [Flags]

       enum ExecutionFlag : uint

       {

           System = 0x00000001,

           Display = 0x00000002,

           Continus = 0x80000000,

       }

       /// <summary>

       ///阻止系统休眠,直到线程结束恢复休眠

       /// </summary>

       /// <param name="includeDisplay">是否阻止关闭显示器</param>

       public static void PreventSleep(bool includeDisplay = false)

       {

           if (includeDisplay)

               SetThreadExecutionState(ExecutionFlag.System | ExecutionFlag.Display | ExecutionFlag.Continus);

           else

               SetThreadExecutionState(ExecutionFlag.System | ExecutionFlag.Continus);

       }

       /// <summary>

       ///恢复系统休眠

       /// </summary>

       public static void ResotreSleep()

       {

           SetThreadExecutionState(ExecutionFlag.Continus);

       }

       /// <summary>

       ///重置系统休眠计时器

       /// </summary>

       /// <param name="includeDisplay">是否阻止关闭显示器</param>

       public static void ResetSleepTimer(bool includeDisplay = false)

       {

           if (includeDisplay)

               SetThreadExecutionState(ExecutionFlag.System | ExecutionFlag.Display);

           else

               SetThreadExecutionState(ExecutionFlag.System);

       }

   }

因此,要实现下载时阻止程序休眠,则有两种实现方式:

  • 下载期间起计时器定期执行ResetSleepTimer函数
  • 下载开始时执行PreventSleep函数,下载结束后执行ResotreSleep函数。
  • 另外,和阻止系统休眠类似,有的程序还需要有阻止屏保功能。

到此这篇关于C#实现系统休眠或静止休眠的文章就介绍到这了,希望对你有所帮助。

转自:微点阅读   https://www.weidianyuedu.com/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值