程序要求:
设置快捷键
如:F11关闭显示器,F12屏幕保护
并把这个程序在开机的时候就隐藏运行
一按F11就关闭显示器
一按F12就屏幕保护

解决方案 »

  1.   

    编写诸如监控、多媒体、大规模数据处理之类程序的时候,我们常常需要禁用屏幕保护和电源管理,以确保程序的正常运行。一般来说,可以使用模拟鼠标键盘动作的办法禁用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  上面的代码仅仅为了说明调用序列,实际应用时还要加上相当多的错误处理代码,这里忽略。
    编写诸如监控、多媒体、大规模数据处理之类程序的时候,我们常常需要禁用屏幕保护和电源管理,以确保程序的正常运行。一般来说,可以使用模拟鼠标键盘动作的办法禁用95下的屏幕保护和电源管理,但是同样的方法应用到2000/NT,却常常会无效,这和系统的设置有关系。运用Windows平台SDK的界面API可以轻松的做到禁用屏幕保护和电源管理,唯一的缺陷是这种方法无法应用到Windows95下的Win32应用程序中。以下,我将介绍具体方法。