https://msdn.microsoft.com/en-us/library/windows/desktop/aa372721(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/aa372708(v=vs.85).aspx

今天要查找如何获取系统从睡眠、休眠状态下唤醒的消息,写了个MFC对话框的程序,贴出部分核心代码:

  1. //唤醒消息捕获
  2. LRESULT CSystemResumedMessageDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
  3. {
  4. // TODO: 在此添加专用代码和/或调用基类
  5. if ((message == WM_POWERBROADCAST) && (wParam == PBT_APMRESUMEAUTOMATIC))
  6. {
  7. ShowSystemResumedTips();//捕获唤醒消息后的提示操作
  8. }
  9. return CDialog::WindowProc(message, wParam, lParam);
  10. }

唤醒消息捕获参考了:http://bbs.csdn.net/topics/320261685

之前写过一个实现系统关机、重启、睡眠、休眠的实现,一并贴出代码:

  1. /*
  2. MySystemShutdown
  3. 功能:实现系统关机、重启
  4. 参数:
  5. dwShutDownFlag:EWX_SHUTDOWN 关机 EWX_REBOOT 重启
  6. bForce:强制执行
  7. 返回值:成功返回TRUE,否则返回FALSE
  8. */
  9. BOOL MySystemShutdown(DWORD dwShutDownFlag = EWX_SHUTDOWN,BOOL bForce = FALSE)
  10. {
  11. HANDLE hToken;
  12. TOKEN_PRIVILEGES tkp;
  13. // Get a token for this process.
  14. if (!OpenProcessToken(GetCurrentProcess(),
  15. TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
  16. return( FALSE );
  17. // Get the LUID for the shutdown privilege.
  18. LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
  19. &tkp.Privileges[0].Luid);
  20. tkp.PrivilegeCount = 1;  // one privilege to set
  21. tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
  22. // Get the shutdown privilege for this process.
  23. AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
  24. (PTOKEN_PRIVILEGES)NULL, 0);
  25. if (GetLastError() != ERROR_SUCCESS)
  26. return FALSE;
  27. if (bForce)
  28. {
  29. dwShutDownFlag |= EWX_FORCE;//强制终止进程。当此标志设置,Windows不会发送消息WM_QUERYENDSESSION和WM_ENDSESSION的消息给目前在系统中运行的程序。这可能会导致应用程序丢失数据。
  30. }
  31. if (!ExitWindowsEx(dwShutDownFlag,
  32. SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
  33. SHTDN_REASON_MINOR_UPGRADE |
  34. SHTDN_REASON_FLAG_PLANNED))
  35. return FALSE;
  36. return TRUE;
  37. }
  38. /*
  39. MySystemSleep
  40. 功能:实现系统休眠、睡眠功能
  41. 参数:
  42. bHibernate:TRUE休眠 FALSE睡眠
  43. 返回值:成功返回TRUE,否则返回FALSE
  44. */
  45. BOOL MySystemSleep(BOOL bHibernate = TRUE)//
  46. {
  47. HMODULE hModule = NULL;
  48. BOOL bRet = FALSE;
  49. //      BOOLEAN WINAPI SetSuspendState(
  50. //          __in          BOOLEAN Hibernate,
  51. //          __in          BOOLEAN ForceCritical,
  52. //          __in          BOOLEAN DisableWakeEvent
  53. //          );
  54. typedef BOOL (WINAPI *PSetSuspendState)(BOOL Hibernate,
  55. BOOL ForceCritical,
  56. BOOL DisableWakeEvent);
  57. hModule = LoadLibrary(_T("PowrProf.dll"));
  58. if (hModule)
  59. {
  60. PSetSuspendState pSetSuspendState = NULL;
  61. pSetSuspendState = (PSetSuspendState)::GetProcAddress(hModule,"SetSuspendState");//设置备份文件名函数指针
  62. if(pSetSuspendState != NULL)
  63. {
  64. bRet = pSetSuspendState(bHibernate,0,0);
  65. }
  66. FreeLibrary(hModule);
  67. }
  68. return bRet;
  69. }

程序源码连接:http://download.csdn.net/detail/daiafei/8673013

http://blog.csdn.net/daiafei/article/details/45562937

系统休眠消息PBT_APMSUSPEND的更多相关文章

  1. Android系统休眠对程序的影响以及处理

    Android系统在用户长时间不操作时,为了节省资源,系统会选择休眠.在休眠过程中自定义的Timer.Handler.Thread.Service等都会暂停.而有时候这种机制会影响到我们程序的正常运行 ...

  2. 现代IM系统中消息推送和存储架构的实现

    现代IM系统中消息推送和存储架构的实现-云栖社区-阿里云 https://yq.aliyun.com/articles/253242

  3. 系统休眠(System Suspend)和设备中断处理

    一.设备IRQ的suspend和resume 本小节主要解决这样一个问题:在系统休眠过程中,如何suspend设备中断(IRQ)?在从休眠中唤醒的过程中,如何resume设备IRQ? 一般而言,在系统 ...

  4. Windows系统的消息机制

    1)Add the window to the clipboard viewer chain. 通过SetClipboardViewer()传入窗口句柄,所有监视剪贴板的窗口句柄会组成一个链表(后来者 ...

  5. C#阻止系统休眠

    阻止系统休眠 using System.Runtime.InteropServices; static class WinSleepCtr { //定义API函数 [DllImport("k ...

  6. Linux系统休眠和设备中断处理

    一.设备IRQ的suspend和resume 本小节主要解决这样一个问题:在系统休眠过程中,如何suspend设备中断(IRQ)?在从休眠中唤醒的过程中,如何resume设备IRQ? 一般而言,在系统 ...

  7. 【ABAP系列】SAP 系统的消息类型分析 MESSAGE TYPE

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 系统的消息类型分析 ME ...

  8. (转)Linux环境进程间通信----系统 V 消息队列列

    转:http://www.ibm.com/developerworks/cn/linux/l-ipc/part3/ 消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点.作为早期unix通 ...

  9. Windows 10 技术预览版9926 “未知源”引起系统休眠后自启的解决办法

    问题的由来: 自从安装上了最新发布的Windows 10 ,使用起来有诸多的改进:无论是重绘的图标还是通知消息中心的整合还是更智能的OneDrive客户端都使得工作起来非常愉悦. 不过笔者这两天频繁遇 ...

随机推荐

  1. Fiddler快速入门(还有一个功能就是不经过网络,直接模拟一个响应返回给客户端)

    Fiddler是一个免费.强大.跨平台的HTTP抓包工具.Wireshark也是一个强大的抓包工具,不过Wireshark是一个通用的抓包工具,主要精力放在各种协议上了,针对HTTP的特定功能较少.所 ...

  2. QSettings提供了非常方便的注册表读写

    Qt的QSettings提供了非常方便的注册表读写 写入: //写入注册表 void setRegValue( QString strPath, QString strItemName, QStrin ...

  3. 苹果抛弃的芯片公司Imagination被中资49亿溢价收购

    原标题:中国资本Canyon Bridge出资5.5亿英镑收购Imagination芯片 来源:观察者网 对于一家手机硬件公司来说,被苹果看上可谓是“一夜之间,鸡犬升天”.但是如果被苹果抛弃了呢?那可 ...

  4. 西门子S7报文解析

    1.报文的基本格式 1.1 第1和第2个字节是:固定报文头03 00,这里我们就用到三种报文: a.初始化 b. 读 c.写,都是这种格式: 1.2 第3和第4个字节是:整个报文的长度: 其它部分就是 ...

  5. AVL 树的插入、删除、旋转归纳

    参考链接: http://blog.csdn.net/gabriel1026/article/details/6311339   1126号注:先前有一个概念搞混了: 节点的深度 Depth 是指从根 ...

  6. silverlight,WPF动画终极攻略之番外 3D切换导航篇(Blend 4开发)

    原文:silverlight,WPF动画终极攻略之番外 3D切换导航篇(Blend 4开发) 这篇介绍的是3D导航,点击图标,页面360°翻转的效果!有什么不足的欢迎大家指出来. 1.新建一个user ...

  7. hdu2083 简易版之最短距离

    点A和点B之间随意一点到A的距离+到B的距离=|AB|,而AB外的一点到A的距离+到B的距离>|AB|: #include<math.h> #include<stdio.h&g ...

  8. python中对文件、文件夹的操作

    python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件: 1) os.mknod("test.txt")       创建空文件 2) open(&qu ...

  9. IOS status bar

    从iOS7开始,该系统提供2样的管理风格状态栏 由UIViewController管理(每UIViewController我们可以有各自不同的状态栏) 由UIApplication管理(由其统一管理的 ...

  10. 好玩的WPF第一弹:窗口抖动+边框阴影效果+倒计时显示文字

    原文:好玩的WPF第一弹:窗口抖动+边框阴影效果+倒计时显示文字 版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csd ...