У меня есть программа, которая читает состояние батареи в 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;
}
spsPwr.BatteryLifePercent
содержит оставшийся заряд батареи в процентах и имеет тип BYTE
, что означаетон может показывать чтение только в круглых числах (т.е. int
).Я заметил, что приложение под названием BatteryBar может отображать процент заряда батареи в значении с плавающей запятой.
BatteryBar - это приложение .NET.Как я могу получить процент заряда батареи в формате float / double, используя чистый C / C ++ с Windows API?(Решение, которое может быть скомпилировано с MinGW, является предпочтительным)