使用 Win32 API 监视电池电量
Monitor battery charge with Win32 API
我正在尝试编写一个小应用程序来监视笔记本电脑电池中剩余电量,我想知道我可以使用哪个Win32功能来完成它。
对于 Vista 及更高版本,您可以使用 RegisterPowerSettingNotification
有关早期函数,请参阅 MSDN 页面"电源管理功能:Windows Server 2003 及更早版本"此部分中的电源管理函数
您可以在代码项目上查看 Vista 方法的示例代码。
我建议使用Win32 GetSystemPowerStatus函数。代码片段:
int getBatteryLevel()
{
SYSTEM_POWER_STATUS status;
GetSystemPowerStatus(&status);
return status.BatteryLifePercent;
}
以下链接中有一篇非常详细的文章,以及一个 n 个示例项目(在 Win8.1 上测试): http://www.codeproject.com/Articles/15829/Vista-Goodies-in-C-Monitoring-the-Computer-s-Power
你可以听PBT_APMPOWERSTATUSCHANGE
。在以下 3 种情况下触发此事件。
- 电池寿命降至不到 5 分钟的电量,或
- 电池寿命降至 10% 以下,
- 电池寿命变化 3%
理想的方法是在接收此事件时调用 GetSystemPowerStatus(),而不是连续轮询。SYSTEM_POWER_STATUS
的BatteryLifePercent
成员将以百分比表示电池寿命。
对于此事件,您必须处理WM_POWERBROADCAST
消息。对于PBT_APMPOWERSTATUSCHANGE
wParam将被PBT_APMPOWERSTATUSCHANGE
相关文章:
- Win32编译器选项和内存分配
- 正在VS调试器中监视映射条目
- C++win32 API创建多个类似视口的窗口
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- 检测win32服务创建和删除的最佳方法
- WIN32:C++,为什么在WM_CLOSE上调用Messagebox函数程序正在冻结
- 将 win32 hbitmap 转换为 winrt softwarebitmap
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- VSCode C++ 编译的exe感染了Win32:TrojanX-gen[Trj]
- 从预处理器获取 Windows 版本(C++ Win32)
- Issues with Win32 ReadProcessMemory API
- Win32 发送输入鼠标移动滞后并冻结
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- C++线程:如何在一个线程仍在运行时阻止另一个线程执行 (Win32)
- 将 Win32/WinAPI 应用程序移植到 wxWidgets
- Win32 API 控制台光标在 WriteConsole 后不移动
- C++ Win32 Threads
- 使用win32监视Windows任务栏状态更改
- 使用 Win32 API 监视电池电量