花差花差

像写情书一样写代码

费照东ID:fzd999
164674次访问,排名449好友3人,关注者32
物格而后知致,知致而后身修~
fzd999的文章
原创 46 篇
翻译 0 篇
转载 0 篇
评论 769 篇
花差花差的公告

这里全部是我的原创,一点一滴积累下来的文字。
闲时,总喜欢把玩自己写的小玩艺,细细读网友的评论,然后再看一遍。
如果你是我的朋友,很开心你能来这里做客,如果你是匆匆过客,也希望小坐一会儿,留下几字评论。

最近评论
zhaowanru19:你来上海了。。。
我都不知道。。。
呵呵。。。
最近工作怎样?
忙不。。。

lyai007:要跟你做個朋友不知道可不可以
gongmingwind:思考中!
carren1218:很伤感。。。
fzd999:楼上是???
文章分类
收藏
    相册
    值得纪念的一切
    我的朋友们
    ee——左边风景
    团团的饭团
    大东——东大传说
    大雨仔
    我们的婉如同学
    我心如水
    流风轩主——颜鹏
    默默——心绪缥缈
    友情链接
    Dicky'Blog
    sugi的暗黑木屋
    南京程序员之家
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 如何禁用Windows屏保和电源管理收藏

    新一篇: 湖.美.灵犀 | 旧一篇: 生于忧患,死于忧患——为8.30而作

    编写诸如监控、多媒体、大规模数据处理之类程序的时候,我们常常需要禁用屏幕保护和电源管理,以确保程序的正常运行。一般来说,可以使用模拟鼠标键盘动作的办法禁用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 上面的代码仅仅为了说明调用序列,实际应用时还要加上相当多的错误处理代码,这里忽略。

    发表于 @ 2004年08月30日 20:30:00|评论(loading...)|编辑

    新一篇: 湖.美.灵犀 | 旧一篇: 生于忧患,死于忧患——为8.30而作

    评论

    #路过 发表于2005-07-20 11:40:00  IP: 61.186.252.*
    收藏.谢谢楼主!! ^-^
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 花差花差