Boo*_*rap 5 c++ winapi power-management
我有一个程序可以读取Windows中的电池状态,如下所示(简化代码):
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[]) {
SYSTEM_POWER_STATUS spsPwr;
if( GetSystemPowerStatus(&spsPwr) ) {
cout << "\nAC Status : " << static_cast<double>(spsPwr.ACLineStatus)
<< "\nBattery Status : " << static_cast<double>(spsPwr.BatteryFlag)
<< "\nBattery Life % : " << static_cast<double>(spsPwr.BatteryLifePercent)
<< endl;
return 0;
} else return 1;
}
Run Code Online (Sandbox Code Playgroud)
spsPwr.BatteryLifePercent电池的剩余电量以百分比表示,属于类型BYTE,表示只能以整数显示读数(即int)。我注意到一个名为BatteryBar的应用程序可以在浮点值中显示电池百分比。
BatteryBar是一个.NET应用程序。如何使用带有Windows API的纯C / C ++以浮点/双精度获取电池百分比读数?(最好使用MinGW编译的解决方案)
您可以使用 WMI 获取此信息。尝试使用BatteryFullChargedCapacity并且BatteryStatus类都是root\WMI命名空间的一部分。
要获取剩余电池电量百分比,只需使用 RemainingCapacity(BatteryStatus) 和FullChargedCapacity(BatteryFullChargedCapacity) 属性。
剩余电池电量百分比为
(剩余容量 * 100) / 已充满电容量
例如,如果 FullChargedCapacity 属性报告一个5266值,而 RemainingCapacity 报告 a 5039,则结果将是95,68932776 %
如果您不知道如何从 C++ 访问 WMI,请阅读这些文章
| 归档时间: |
|
| 查看次数: |
6522 次 |
| 最近记录: |