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. burp suite中国乱码的解决方案

    于http的response还有经常出现乱码,其实解决的办法很easy 首先点击Options标签, 然后找到display 找到http message display watermark/2/te ...

  2. SpringCloud学习笔记-zuul网关

    公司目前使用的是dubbo方式实现微服务,想试水改造接口层服务为Spring Cloud, 以下是网络拓补图. 第一层负载均衡可以用nginx或者zuul(即有2层zuul), 本图画的是nginx. ...

  3. Android客户端后台发送邮件(JMail)

    今天在做项目的时候要处理用户注册问题,里面有个邮箱验证,网上找了一下果然有人做过,但是我拿过来都运行不起来,或者是发送不了邮件.后来我对这个浅浅的研究了一下,贴出来和大家共享. Activity pa ...

  4. 简单使用.net core 自带的DI

    1.创建一个web api项目 2.在项目中创建一个接口类 namespace LearnCore.CoreDI { public interface ILearnDI { string GetNam ...

  5. windows下Redis 主从读写分离部署

    原文:windows下Redis 主从读写分离部署 1.可直接下载window下的运行文件(下面这个链接) 也可以浏览github 查看相应的版本说明文档 https://github.com/Ser ...

  6. ubuntu12.04单卡server(mentohust认证)再加上交换机做路由软件共享上网

    最近成立了实验室的网络环境中,通过交换机连接的所有主机实验室.想要一个通过该server(单卡)做网关,使用mentohust认证外网,然后内网中的其它主机通过此网关来连接外网. 1.首先在serve ...

  7. Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK

    原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  8. MCB2300的CTM1050(CAN) - 系列示意图

    这一系列示意图由Portel DXP 2004绘. 截图: 文件下载: CTM1050.7z 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  9. VLC-FM PLAYLIST

    VLC-FM-PLAYLIST.xspf <?xml version="1.0" encoding="UTF-8"?> <playlist x ...

  10. 更新EF(更新表 添加表…)