Delphi 操作Windows系统睡眠-防止系统/电脑 进入睡眠或关闭显示器

1、防止进入睡眠

1.1、引用单元

Delphi 单元:

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

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

unit SystemCriticalU;

interface

uses

  Windows;

type

  TSystemCritical =class

  private

    FIsCritical:Boolean;

    procedure SetIsCritical(const Value:Boolean) ;

  protected

    procedure UpdateCritical(Value:Boolean) ; virtual;

  public

    constructor Create;

    property IsCritical:Boolean read FIsCriticalwrite SetIsCritical;

  end;

var

  SystemCritical: TSystemCritical;

implementation

{ TSystemCritical }

// REF: http://msdn.microsoft.com/en-us/library/aa373208.aspx

type

  EXECUTION_STATE = DWORD;

  

const

  ES_SYSTEM_REQUIRED =$00000001;

  ES_DISPLAY_REQUIRED =$00000002;

  ES_USER_PRESENT =$00000004;

  ES_AWAYMODE_REQUIRED =$00000040;

  ES_CONTINUOUS =$80000000;

  

  KernelDLL ='kernel32.dll';

{

  SetThreadExecutionState Function

  Enables an application to inform the system that it is in use,

  thereby preventing the system from entering sleep or turning off the

  display while the application is running.

}

procedure SetThreadExecutionState(ESFlags: EXECUTION_STATE);

  stdcall; external kernel32 name'SetThreadExecutionState';

constructor TSystemCritical.Create;

begin

  inherited;

  FIsCritical :=False;

end;

procedure TSystemCritical.SetIsCritical(const Value:Boolean) ;

begin

  if FIsCritical = Valuethen

    Exit;

  FIsCritical := Value;

  UpdateCritical(FIsCritical);

end;

procedure TSystemCritical.UpdateCritical(Value:Boolean) ;

begin

  if Valuethen

    // 防止睡眠空闲超时和关机。

    SetThreadExecutionState(ES_SYSTEM_REQUIREDor ES_CONTINUOUS)

  else

    //清除执行状态标志以禁用离开模式并允许

    // 系统空闲以正常睡眠

    SetThreadExecutionState(ES_CONTINUOUS);

end;

initialization

SystemCritical := TSystemCritical.Create;

finalization

SystemCritical.IsCritical :=False;

SystemCritical.Free;

end. 

引用示例:

1

2

3

4

5

6

7

SystemCritical.IsCritical =true;

try

  // 这里做关键操作

  // 不会进入睡眠和关闭显示器

finally

  SystemCritical.IsCritical =false;

end;

1.2 直接使用WinAPI函数,点击查看:SetThreadExecutionState

 

2、使电脑进入睡眠

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

//提升进程令牌函数

function AdjustProcessPrivilege(ProcessHandle: THandle; Token_Name:Pchar):boolean;

var

  Token: THandle;

  TokenPri: _TOKEN_PRIVILEGES;

  ProcessDest:int64;

  l: DWORD;

begin

  Result :=False;

  if OpenProcessToken(ProcessHandle, TOKEN_Adjust_Privileges, Token)then

  begin

    if LookupPrivilegeValue(nil, Token_Name, ProcessDest)then

    begin

      TokenPri.PrivilegeCount :=1;

      TokenPri.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;

      TokenPri.Privileges[0].Luid := ProcessDest;

      l :=0;

      //更新进程令牌,成功返回TRUE

      if AdjustTokenPrivileges(Token,False, TokenPri, sizeof(TokenPri),nil, l)then

        Result :=True;

    end;

  end;

end;  

引用示例:

1

2

3

4

5

6

if AdjustProcessPrivilege(GetCurrentProcess,'SeShutdownPrivilege')then//提升权限

begin

  SetSystemPowerState(false,TRUE);//进入睡眠

end else begin

  //

end;

  

Delphi 操作Windows系统睡眠-防止系统/电脑 进入睡眠或关闭显示器相关推荐

  1. 计算机中恢复是什么的反操作,Windows 7 中的“系统恢复”选项是什么?

    本文提供了有关"windows 7 中的系统恢复选项"的信息 "系统恢复选项"菜单包含多种工具,例如启动修复,可帮助您从严重错误中恢复 Windows.这组工具 ...

  2. 电脑睡眠快捷键_电脑快速进入睡眠的快捷键是什么?

    电脑快速进入睡眠的快捷键是什么?正常情况下需要点击电源再按睡眠,小编觉得有点麻烦,如果你想要进入睡眠状态能够像锁屏快捷键那样就好了,那么今天就教大家如何设置睡眠快捷键,让你的电脑快速进入睡眠状态. 我 ...

  3. 笔记本电脑无法进入睡眠状态_电脑进入睡眠模式后无法唤醒的原因解析

    电脑的休眠功能挺好用的,不过有时候有的电脑休眠没问题,但是唤醒就出毛病了--无论怎么弄就是"醒不了",气急败坏的唯一办法就是按住开关键4秒硬关机,然后重新开机--这简直没法忍! 电 ...

  4. 一步一步 Mac OS X 与 Windows 7 双系统共存 的“黑苹果” 电脑 安装 入门

    硬件配置: CPU:Intel P8300 主板:GM965 软件配置: Windows 7 Mac OS X 10.6.3 相关地址: http://www.kexts.com http://bbs ...

  5. 步一步 Mac OS X 与 Windows 7 双系统共存 的“黑苹果” 电脑 安装 入门

    转发文章来至:http://www.cnblogs.com/TerryFeng/archive/2011/02/20/1958846.html 硬件配置: CPU:Intel P8300 主板:GM9 ...

  6. windows计算机查看里设置,怎么让电脑像手机一样屏幕常亮呢,看这里,WIN10系统下如何设置电脑屏幕...

    原标题:怎么让电脑像手机一样屏幕常亮呢,看这里,WIN10系统下如何设置电脑屏幕 小编的手机为了看文章,尤其是一些长篇文章时,通常会给手机设置成屏幕常亮,不然就会黑屏进入锁屏而影响阅读体验.电脑的屏幕 ...

  7. windows系统假死,无法从睡眠中唤醒

    windows系统假死,无法从睡眠中唤醒 经常有朋友问我,新购买的电脑,或者新安装的系统,为什么电脑开机放在那,过一会不用就黑屏了,无论敲击键盘还是鼠标都没有反应,是不是硬件硬件坏了. 其实不然,是因 ...

  8. android系统用在什么电脑,手机变电脑的简单操作 适用于所有Android系统的向日葵...

    现如今,什么电子设备对于我们来说最重要呢?毫无疑问,必定是人手一部不离不弃的手机!不过,可能有"杠精"会说了,电脑不是更重要?毕竟办公离不开,还有很多大型网络游戏也只能在电脑上才享 ...

  9. windows和android双系统平板,平板电脑双系统和安卓单系统,哪个好用?

    平板电脑双系统和安卓单系统,哪个好用?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 平板电脑双系统和安卓单系统,哪个好 ...

最新文章

  1. 微软在C# 8中引入预览版可空引用类型
  2. java引用其他类的数据头文件_Java 实现数据表与简单Java类映射转换
  3. 文件自定义变量_awk 内置变量与自定义变量
  4. ACM训练总结(大二)
  5. Windows环境下Anaconda-Navigator出现闪退、无法打开问题的解决方案记录
  6. linux在什么环境运行,Linux环境变量是什么
  7. centos6.5 升级python2.6到python2.7
  8. 统计自然语言处理基础——学习摘要(1)
  9. odoo 开发者模式添加计算字段
  10. springboot 整合 百度OCR身份证识别
  11. java ppt转图片,怎么用POI将PPT的内容转换为图片
  12. 我的世界java版地狱_我的世界怎么去地狱_Minecraft地狱门建造教程 - 我的世界中文站...
  13. Java基础:常用类(String类)
  14. npm WARN unmet dependency错误解决方法
  15. 数据库存储系统应用,超市小票系统
  16. Sentinel -- sentinel控制台的简单应用
  17. 数据库管理工具——SQuirreL SQL Client使用入门
  18. 英文简历如何选择字体?
  19. 「运维有小邓」给企业文件服务器加把锁(文件服务器审计)
  20. Android开发-基础入门

热门文章

  1. 最新云核泛目录自带MIP模板开源站群系统源码
  2. linux系统下进行磁盘扩容
  3. 关于局域网内访问网站
  4. Normalization of Database——数据库的正规化
  5. thinkphp,onethink,ocenter
  6. 密钥对,密钥,公钥,私钥的 区分!!!
  7. CRM客户管理软件系统有哪些功能模块
  8. 我在安装freenas的问题总结
  9. CSS实现磨砂玻璃(毛玻璃)效果样式
  10. 一个卖报老汉的营销(值得一看)