電源のステータスを取得する方法【Windows API】
商用電源(コンセント)からの給電で動作しているかバッテリー動作かの判定を行います。 バッテリー動作時はバッテリーの基本的なステータスが取得できます。基本的にバッテリー残量は目安にしかなりません。 このAPIはNT4には存在しないAPIですので注意してください。 Windows98では正常に動作しない可能性があります
int main(int argc, char* argv[])
{
SYSTEM_POWER_STATUS sps;
if (GetSystemPowerStatus(&sps)) {
// 商用電源(コンセント)に繋がれているかどうか?
if (sps.ACLineStatus == AC_LINE_OFFLINE) {
printf("[商用電源] オフライン\n");
} else if (sps.ACLineStatus == AC_LINE_ONLINE) {
printf("[商用電源] オンライン\n");
} else if (sps.ACLineStatus == AC_LINE_BACKUP_POWER) {
printf("[商用電源] バックアップ\n");
} else {
printf("[商用電源] 不明\n");
}
// バッテリーのステータス
if (sps.BatteryFlag == BATTERY_FLAG_HIGH) {
printf("[バッテリー状態] 良好\n");
} else if (sps.BatteryFlag == BATTERY_FLAG_LOW) {
printf("[バッテリー状態] 不足\n");
} else if (sps.BatteryFlag == BATTERY_FLAG_CRITICAL) {
printf("[バッテリー状態] 危険\n");
} else if (sps.BatteryFlag == BATTERY_FLAG_CHARGING) {
printf("[バッテリー状態] 充電中\n");
} else if (sps.BatteryFlag == BATTERY_FLAG_NO_BATTERY) {
printf("[バッテリー状態] 未搭載\n");
} else {
printf("[バッテリー状態] 不明\n");
}
// バッテリーの充電容量が取得できた場合は表示する
if (sps.BatteryLifePercent != BATTERY_PERCENTAGE_UNKNOWN) {
printf("[バッテリー残量] %d%%\n", sps.BatteryLifePercent);
}
// バッテリーの稼働時間が取得できた場合は表示する
if (sps.BatteryLifeTime != BATTERY_LIFE_UNKNOWN) {
printf("[バッテリー稼働時間] %d[s]\n", sps.BatteryLifePercent);
}
// バッテリー自体の性能
if (sps.BatteryFullLifeTime != BATTERY_LIFE_UNKNOWN) {
printf("[バッテリー基本性能] %d[s]\n", sps.BatteryLifePercent);
}
}
return 0;
}
