使用Win32 API监视电池电量

问题描述 投票:6回答:4

[我正在尝试编写一个小型应用程序,用于监视笔记本电池中还剩下多少电量,我想知道我可以使用哪种Win32函数来完成此任务。

c++ c winapi monitor power-management
4个回答
7
投票

对于Vista或更高版本,您可以使用RegisterPowerSettingNotification

有关更早的功能,请参见MSDN页面“电源管理功能:Windows Server 2003和更早版本”的本节中的Power Management Functions

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


3
投票

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

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

0
投票

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


0
投票

您可以收听PBT_APMPOWERSTATUSCHANGE。在以下3个场景中触发此事件。

  1. 电池寿命下降到少于5分钟的电量,或
  2. 电池寿命低于10%,
  3. 电池寿命改变3%

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

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

© www.soinside.com 2019 - 2024. All rights reserved.