禁用屏保和电源管理

[推荐]关于禁用屏幕保护和电源管理<--StartFragment --> 编写诸如监控、多媒体、大规模数据处理之类程序的时候,我们常常需要禁用屏幕保护和电源管理,以确保程序的正常运行。一般来说,可以使用模拟鼠标键盘动作的办法禁用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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值