打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何禁用Windows屏保和电源管理
编写诸如监控、>多媒体、大规模数据处理之类程序的时候,我们常常需要禁用屏幕保护和电源管理,以确保程序的正常运行。一般来说,可以使用模拟鼠标键盘动作的办法禁用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 上面的代码仅仅为了说明调用序列,实际应用时还要加上相当多的错误处理代码,这里忽略。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
获取计算机信息
systemparametersinfo详细用法1
c# 窗体全屏显示的完整范例
使用SystemParametersInfo访问用户界面设置
delphi 获取系统桌面大小
SystemParametersInfo API学习
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服