6

我正在尝试编写一个小应用程序来监视笔记本电池中剩余的电量,我想知道我可以使用哪个 Win32 函数来完成此操作。

4

4 回答 4

7

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

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

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

于 2008-10-24T13:06:58.657 回答
3

我推荐使用 Win32 GetSystemPowerStatus函数。代码片段:

int getBatteryLevel()
{
    SYSTEM_POWER_STATUS status;
    GetSystemPowerStatus(&status);
    return status.BatteryLifePercent;
}
于 2015-04-03T16:01:20.217 回答
0

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

于 2014-09-25T12:35:31.140 回答
0

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

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

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

对于此事件,您将必须处理该WM_POWERBROADCAST消息。对于PBT_APMPOWERSTATUSCHANGEwParam 将是PBT_APMPOWERSTATUSCHANGE

于 2020-02-09T18:38:12.487 回答