我正在尝试编写一个小应用程序来监控笔记本电池剩余的电量,我想知道我可以使用哪种Win32功能来实现这一目标。
答案 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种情况下触发此事件。
理想的方法是在收到此事件时调用GetSystemPowerStatus(),而不是连续轮询。 BatteryLifePercent
的{{1}}成员将以百分比形式提供电池寿命。
对于此事件,您将必须处理WM_POWERBROADCAST
消息。对于SYSTEM_POWER_STATUS
,wParam将为PBT_APMPOWERSTATUSCHANGE