设置windows电源管理

网页 专栏收录该内容
6 篇文章 0 订阅

设置windows电源管理
我的程序必须不间断运行,硬盘、显示器等设备必须不能关闭包括屏幕保护也不能出现。  
  当然在windows电源管理手动可以设置,但毕竟有的用户不知道。

问题点数: 50、回复次数: 2
1楼  vcleaner   ( 我没当大哥很久了.......) 四星用户 该版得分小于等于100000分,大于50000分  回复于  2004-11-18 17:04:04  得分  50

编写诸如监控、多媒体、大规模数据处理之类程序的时候,我们常常需要禁用屏幕保护和电源管理,以确保程序的正常运行。一般来说,可以使用模拟鼠标键盘动作的办法禁用95下的屏幕保护和电源管理,但是同样的方法应用到2000/NT,却常常会无效,这和系统的设置有关系。  
  运用Windows平台SDK的界面API可以轻松的做到禁用屏幕保护和电源管理,唯一的缺陷是这种方法无法应用到Windows95下的Win32应用程序中。以下,我将介绍具体方法。  
   
  使用SystemParametersInfo这个API来实现对屏幕保护和电源管理的禁用:  
  BOOL   SystemParametersInfo(  
      UINT   uiAction,     //   system   parameter   to   retrieve   or   set  
      UINT   uiParam,       //   depends   on   action   to   be   taken  
      PVOID   pvParam,     //   depends   on   action   to   be   taken  
      UINT   fWinIni         //   user   profile   update   option  
  );  
   
  以下是禁用屏幕保护的代码:  
  void   DisableScrSaver()  
  {  
  BOOL   bScrActive;    
  SystemParametersInfo(SPI_GETSCREENSAVEACTIVE,   0,   &bScrActive,   0);  
  if   (bScrActive)  
  {  
  SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,   FALSE,   NULL,   0);  
  }  
  }  
  以下是启用屏幕保护的代码:  
  void   CNetRGCltDlg::EnableScrSaver()  
  {  
  SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,   TRUE,   NULL,   0);  
  }  
   
  由于禁用电源保护不可以在Win95下被Win32应用程序使用,所以要事先判断当前操作系统是不是Win95,这里假设已经用函数BOOL   IsWin95()实现。  
  以下是禁用电源保护的代码:  
  void   DisablePmmSaver()  
  {  
  //  
  //   由于电源管理的特殊性,不能直接用SPI_SETLOWPOWERACTIVE命令字实现,而是要设置延时。  
  //  
   
  SystemParametersInfo(SPI_GETLOWPOWERTIMEOUT,   0,   &m_nLowpowerTimeout,   0);  
  SystemParametersInfo(SPI_GETPOWEROFFTIMEOUT,   0,   &m_nPoweroffTimeout,   0);  
  SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT,   0,   NULL,   0);  
  SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT,   0,   NULL,   0);  
  }  
   
  以下是启用电源保护的代码  
  void   EnablePmmSaver()  
  {  
  SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT,   m_nLowpowerTimeout,   NULL,   0);  
  SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT,   m_nPoweroffTimeout,   NULL,   0);  
   
  m_nLowpowerTimeout   =   0;  
  m_nPoweroffTimeout   =   0;  
  }  
   
  说明:  
  1   m_nLowpowerTimeout和m_nPoweroffTimeout是用来存储原先延时的变量,当恢复电源保护时要把电源保护延时设置回原来的值;  
  2   上面的代码仅仅为了说明调用序列,实际应用时还要加上相当多的错误处理代码,这里忽略。 
 
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值