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. Mac 开发PhoneGap 应用,怎样加入插件 barcodescaner

    搞了两天,最终悟出来了 PhoneGap 与 Cordova 的关系了,有人说是WebKit 与 Chrome 的关系,但我个人理解,两个东西再干一件事情,另外 PhoneGap 被Apache 收购 ...

  2. java写文件时往末尾追加文件(而不是覆盖原文件),的两种方法总结

    代码如下: import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; public ...

  3. GammaRay is a tool to poke around in a Qt-application(确实很多功能)

    GammaRay is a tool to poke around in a Qt-application and also to manipulate the application to some ...

  4. 从Client应用场景介绍IdentityServer4(一)

    原文:从Client应用场景介绍IdentityServer4(一) 一.背景 IdentityServer4的介绍将不再叙述,百度下可以找到,且官网的快速入门例子也有翻译的版本.这里主要从Clien ...

  5. WPF 线程:使用调度程序构建反应速度更快的应用程序

    原文:WPF 线程:使用调度程序构建反应速度更快的应用程序 作者:Shawn Wildermuth 原文:http://msdn.microsoft.com/msdnmag/issues/07/10/ ...

  6. Cocos2d-x layout (两)

    相对于对照布局 Size widgetSize = Director::getInstance()->getWinSize(); Text* alert = Text::create(" ...

  7. 机器学习: Tensor Flow with CNN 做表情识别

    我们利用 TensorFlow 构造 CNN 做表情识别,我们用的是FER-2013 这个数据库, 这个数据库一共有 35887 张人脸图像,这里只是做一个简单到仿真实验,为了计算方便,我们用其中到 ...

  8. 自由度(degree of freedom)

    In many scientific fields, the degrees of freedom of a system is the number of parameters of the sys ...

  9. Android 百度地图 SDK v3.0.0 (四) 离线地图功能介绍

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/37758097 一直认为地图应用支持离线地图非常重要啊.我等移动2G屌丝,流量不易 ...

  10. epplus输出成thml

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...