我正在尝试编写一个小应用程序来监视笔记本电脑电池中剩余电量,我想知道我可以使用哪个Win32功能来完成它。
对于 Vista 及更高版本,您可以使用 RegisterPowerSettingNotification
有关早期函数,请参阅 MSDN 页面"电源管理功能:Windows Server 2003 及更早版本"此部分中的电源管理函数
您可以在代码项目上查看 Vista 方法的示例代码。
我建议使用Win32 GetSystemPowerStatus函数。代码片段:
int getBatteryLevel()
{
SYSTEM_POWER_STATUS status;
GetSystemPowerStatus(&status);
return status.BatteryLifePercent;
}
以下链接中有一篇非常详细的文章,以及一个 n 个示例项目(在 Win8.1 上测试): http://www.codeproject.com/Articles/15829/Vista-Goodies-in-C-Monitoring-the-Computer-s-Power
你可以听PBT_APMPOWERSTATUSCHANGE
。在以下 3 种情况下触发此事件。
- 电池寿命降至不到 5 分钟的电量,或
- 电池寿命降至 10% 以下,
- 电池寿命变化 3%
理想的方法是在接收此事件时调用 GetSystemPowerStatus(),而不是连续轮询。SYSTEM_POWER_STATUS
的BatteryLifePercent
成员将以百分比表示电池寿命。
对于此事件,您必须处理WM_POWERBROADCAST
消息。对于PBT_APMPOWERSTATUSCHANGE
wParam将被PBT_APMPOWERSTATUSCHANGE