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. HDU 4313 Matrix 树形dp

    题意: 给定n个点的树,m个黑点 以下n-1行给出边和删除这条边的费用 以下m个黑点的点标[0,n-1] 删除一些边使得随意2个黑点都不连通. 问删除的最小花费. 思路: 树形dp 每一个点有2个状态 ...

  2. 前端后端分离,怎么解决SEO优化的问题呢?

    对于90%以上的互联网公司来说,前后端分离是必须要做的.目前接手的公司的一个工程,后端是PHP,用的smarty模板,开发效率和之前公司的完全分离相比,确实低不少,一方面需要前端会PHP,另一方面沟通 ...

  3. Spring boot参考指南

    介绍 转载自:https://www.gitbook.com/book/qbgbook/spring-boot-reference-guide-zh/details 带目录浏览地址:http://ww ...

  4. 组态档(configuration file)与建构档

    组态档,或者叫 configuration file,配置文件.组态档是用一种建构软件专用的特殊编程语言写的 CMake 脚本. 使用组态档能改变程序的设置,而不用重新编译程序. CMake 的组态档 ...

  5. java中判断字符串中是否有中文字符

    package com.meritit.test; public class TestChart { public static void main(String[] args) throws Exc ...

  6. JDBC 使用这个是MySQL下的

    import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.R ...

  7. uwp - 解决使用EntityFramework时报错“unable to load dll 'sqlite3':the specified module could not be found”

    在使用uwp的ef过程中碰到一万个问题快折腾死我了,好在最后终于解决掉所有问题,但愿如此,因为在这之前先后发生不同的报错,不知道后面还会碰到新的问题不. 其中一个问题是这样的,生成能正常生成,但是启动 ...

  8. MIPS之路在何方?

    目前市场上还有谁想要MIPS?MIPS接下来将何去何从?如果有一家公司希望能好好地经营MIPS,应该用什么策略呢?   MIPS仍然有营收来源.它还拥有ARM所没有的多执行绪技术.有人说,只要想到半导 ...

  9. VisualStateManager

    管理控件状态和管理控件状态的转换逻辑 <Window.Resources> <Style TargetType="Button" x:Key="Anim ...

  10. js,css引用顺序设定

    遇到的困难 在ASP .NET MVC里面,会使用_Layout.cshtml来绘制一些全局的公共页面,以及引用相关的css和js而在每个独立的页面中,也有自己独立的js一般来说,希望公共的js放在独 ...