当我们的软件运行在某一状态时,此时在做一些重要的、我们关心的事情,我们不希望受到自动屏保和休眠的打扰,需要暂时将自动屏保和休眠禁止掉。就比如暴风影音,在播放视频时是禁止自动屏保和休眠的。那我们怎样将自动屏保、休眠等节电模式暂时禁止掉呢?

Windows在启动屏幕保护程序前会向当前激活的应用程序发WM_SYSCOMMAND消息,其中wParam参数指定了即将执行的系统命令类型,值SC_SCREENSAVE表明这个消息为屏幕保护启动,拦截这个消息并return即可阻止启动屏幕保护,而值SC_MONITORPOWER为显示器节电自动关闭的消息,同理可return。下面为程序开启后,阻止系统这两个动作的代码。

// 为相关窗口类添加WM_SYSCOMMAND消息的响应函数
void CXXXXWnd::OnSysCommand(UINT nID, LPARAM lParam)
{if (nID == SC_SCREENSAVE || nID == SC_MONITORPOWER) {return;}CWnd::OnSysCommand(nID, lParam);
}

Windows在执行电源相关设置的事务时,会发送 WM_POWERBROADCAST消息,我们可以截获到该消息, 相关代码如下所示。其中wParam参数指定了即将执行的系统命令类型。值PBT_APMQUERYSUSPEND表明此时执行的是待机,休眠的请求,过滤掉这个消息,就可以阻止系统进入待机或休眠等模式。截获到该通知消息,直接返回BROADCAST_QUERY_DENY即可,

    //为相关窗口类添加虚函数WindowProcLRESULT CXXXXWnd::WindowProc(UINT message, WPARAM wParam, LPARAM lParam){if (message == WM_POWERBROADCAST && wParam == PBT_APMQUERYSUSPEND)={return BROADCAST_QUERY_DENY;}return CWnd::WindowProc(message, wParam, lParam);}

但是对于WM_POWERBROADCAST消息,在Win7/Win8中是不会在UAC控制下的程序中广播的,要收到该消息可以关闭UAC,或者manifest文件来提权。并且在Win7/Win8中,如果按上述方法收到WM_POWERBROADCAST消息,是截不到PBT_APMQUERYSUSPEND wParam值的,目前的办法是截获到WM_POWERBROADCAST消息就处理,不比对wParam参数值。

如何禁止或暂停Windows的自动屏保、休眠等节电模式相关推荐

  1. Fliqlo时钟Windows、IOS屏保

    作为一个只用过Apple手机和Apple平板的孩纸,在实验室看到师姐的苹果电脑的屏保是这样的: 当时真的觉得吼吼看.虽然我买不起苹果电脑,但我还是想拥有这样的屏保肿么办?所以我就在网上搜呀搜搜呀搜,终 ...

  2. 用JavaScript写一个类似于windows的气泡屏保效果

    最近在学习JavaScript,然后在书上看到了一个简单的碰壁反弹效果,效果你们可以看一下,js代码如下: window.onload = function(){var main = document ...

  3. 计算机自动维护有用吗,如何管理 Windows 10 自动维护功能

    「自动维护」顾名思义,是 Windows 在空闲时对计算机进行软件更新.安全扫描.系统诊断.磁盘碎片整理及 SSD 磁盘优化等不需要用户手动干预的自动化维护操作.该功能不仅 Windows 10 等客 ...

  4. 在Windows XP中制作屏保

    在Windows XP中增加了许多个性化设置,就说它的屏保吧,也不再像Win9x那样死板,利用Windows XP的屏保程序我们可以自己制作个性化的屏保,不信请跟我来. id="ad_top ...

  5. VC的一个屏保例子(MFC)

    用清明上河图做屏保程序 参考http://it.sohu.com/2004/03/15/29/article219442988.shtml 前几天得到清明上河图的图片,感觉它太长,于是不容易欣赏,希望 ...

  6. creator 数字翻页效果_用好这款Fliqlo翻页时钟屏保让你电脑瞬间提升逼格和幸福感!...

    ?本文共计:2088字·⏰阅读时长:6分钟 ?目录预览 -------------- ① 电脑屏幕保护有啥? ② Fliqlo的基本介绍 ③ Fliqlo不同系统的使用教程 + Mac OS系统的使用 ...

  7. 如何将scr文件设置为屏保

    scr为拓展名的文件为windows系统的屏保文件. 选中该scr屏保文件后,右击鼠标,选中"安装"命令. 这样这个屏保就设置好了!

  8. w ndows7怎么设置桌面保护,Windows7怎么设置屏保时间_Win7怎么设置待机时间?-192路由网...

    Windows 7电脑中怎么设置屏幕保护时间?虽然屏幕保护时间的设置比较简单,不过对于一些不熟悉电脑的朋友来说,设置屏幕保护时间还是有些困难.因此,本文通过图文并茂的方式,来详细介绍win7中设置屏幕 ...

  9. 禁止Windows更新自动安装驱动程序

    禁止Windows更新自动安装驱动程序 问题 解决方案 方案1:修改系统设置 方案2:修改组策略 方案3:修改注册表 方案4:回退驱动 问题 Windows更新时,会自动更新驱动程序,甚至有时会将驱动 ...

最新文章

  1. 字符串匹配算法 KMP
  2. 数据科学研究院第四届“院长接待日”成功举办
  3. redis中的string
  4. Apache ZooKeeper - ZK的内存数据 + 持久化事务日志 + 数据快照 初探
  5. python模块的定义_Python基础编程 模块的引入与定义
  6. Vue Router的详细教程
  7. Jeecg-Boot导入附件异常解决
  8. 【BZOJ3489】A simple rmq problem kd-tree
  9. eclipse 左边目录结构下五referenced library解决办法
  10. 洛谷——P2043 质因子分解
  11. Datamill 一个开源的框架
  12. 深入理解IntentService
  13. C++中 sprintf函数的用法
  14. AA制:用算法解决生活中的AA制问题
  15. Linux iptables常用命令
  16. checksum命令 linux_Linux命令大全完整版
  17. Android 实现涂鸦笔效果
  18. BlockingQueue是什么?
  19. 生成有feature的pattern-graph数据集
  20. 国密:生成SM2秘钥、加解密及加验签

热门文章

  1. 前台开发技术那些事儿
  2. HP G10 引导安装ESXI 6
  3. 终于等到你!Guitar Pro 8.1版本简谱功能首发
  4. 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(四):web攻击
  5. 知识图谱第14享: 知识图谱概论
  6. html中文本超过部分盒子部分用省略号显示如何操作
  7. 计算机相关专业知识试题及答案,计算机专业知识试题及答案
  8. 什么是SAFe(规模化敏捷框架)3——敏捷发布火车(上)
  9. 【Eigen】学习Eigen的一些总结——快速入门指南(一)
  10. 微软函数 for vba自定义函数Function