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

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. OC基础第四讲--字符串、数组、字典、集合的常用方法
  2. 如何让您的php也支持pthreads多线程
  3. 五、MySql索引基本介绍
  4. 安卓界面之Toolbar上手
  5. Html,xhtml,xml的定义和区别
  6. 文件上传下载小结一(转载)
  7. LAMP架构(apache与php结合,apache默认虚拟主机)
  8. Kaggle知识点:数据分析EDA
  9. 如何求解两个数的最大公约数
  10. AVFoundation – AVMetadataItem 获取媒体属性元数据
  11. sql server web管理软件
  12. 封装jquery插件 uoload file
  13. 【原】公司P2P平台的功能拆分
  14. 孙鑫VC学习笔记:第十七讲 (四) 用邮槽实现进程间的通信
  15. 公客网beta阶段发布说明
  16. spss分析方法-判别分析
  17. 屌丝变身海归精英?揭秘芝麻信用分黑色产业链
  18. 使用screw一键生成数据库文档
  19. idea git push时 报错 Push rejected: Push to origin/master was rejected
  20. 边做边爱(1)——mapbox做分析图

热门文章

  1. QT5 / opencv / vs2013中文汉字无法显示(显示问号)
  2. 足不出户指挥千里 华为智慧屏让导演隔空指挥
  3. UTF8、unicode、GB2312、ASCII区别
  4. 大数据(041)机器学习【多元线性回归实例】
  5. 图片上传、后端输出下载图片(微信小程序无师自通四)
  6. 【Consul教程】2.SpringBoot整合Consul搭建服务注册与发现
  7. 大学物理实验----单摆,实验数据处理。C语言代码实现
  8. css透明效果代码结构,用CSS实现背景半透明效果的方法实现_css
  9. 计算机组装实训报告模板,计算机组装与维护实训的报告范文
  10. ElasticSearch reindex 使用