使用Win32 API监控电池电量

时间:2008-10-24 13:04:34

标签: c++ c winapi monitor power-management

我正在尝试编写一个小应用程序来监控笔记本电池剩余的电量,我想知道我可以使用哪种Win32功能来实现这一目标。

4 个答案:

答案 0 :(得分:7)

对于Vista及以上版本,您可以使用RegisterPowerSettingNotification

有关早期功能,请参阅MSDN页面“电源管理功能:Windows Server 2003及更早版本”的此部分中的Power Management Functions

您可以在codeproject上看到Vista方法的示例代码。

答案 1 :(得分:3)

我建议使用Win32 GetSystemPowerStatus函数。代码段:

int getBatteryLevel()
{
    SYSTEM_POWER_STATUS status;
    GetSystemPowerStatus(&status);
    return status.BatteryLifePercent;
}

答案 2 :(得分:0)

以下链接中有一篇非常详细的文章,以及一个示例项目(在Win8.1上测试过):http://www.codeproject.com/Articles/15829/Vista-Goodies-in-C-Monitoring-the-Computer-s-Power

答案 3 :(得分:0)

您可以收听PBT_APMPOWERSTATUSCHANGE。 在以下3种情况下触发此事件。

  1. 电池寿命不足5分钟,或者
  2. 电池寿命低于10%
  3. 电池寿命变化3%

理想的方法是在收到此事件时调用GetSystemPowerStatus(),而不是连续轮询。 BatteryLifePercent的{​​{1}}成员将以百分比形式提供电池寿命。

对于此事件,您将必须处理WM_POWERBROADCAST消息。对于SYSTEM_POWER_STATUS,wParam将为PBT_APMPOWERSTATUSCHANGE