簡體   English   中英

使用 Win32 API 監控電池電量

[英]Monitor battery charge with Win32 API

我正在嘗試編寫一個小應用程序來監控筆記本電池的剩余電量,我想知道我可以使用哪個 Win32 函數來完成它。

對於 Vista 及更高版本,您可以使用RegisterPowerSettingNotification

對於較早的功能看電源管理功能在MSDN頁面的這一部分“電源管理功能:Windows Server 2003和此前”

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

我推薦使用 Win32 GetSystemPowerStatus函數。 代碼片段:

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

以下鏈接中有一篇非常詳細的文章,以及一個示例項目(在 Win8.1 上測試過): http : //www.codeproject.com/Articles/15829/Vista-Goodies-in-C-Monitoring-計算機電源

您可以監聽PBT_APMPOWERSTATUSCHANGE 此事件在以下 3 種情況下觸發。

  1. 電池壽命下降到不到 5 分鍾的電量,或
  2. 電池壽命低於10%,
  3. 電池壽命變化 3%

理想的方法是在接收到此事件時調用GetSystemPowerStatus() ,而不是連續輪詢。 BatteryLifePercent成員SYSTEM_POWER_STATUS會給電池壽命百分比。

對於此事件,您必須處理WM_POWERBROADCAST消息。 對於PBT_APMPOWERSTATUSCHANGE wParam 將是PBT_APMPOWERSTATUSCHANGE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM