電源のステータスを取得する方法【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; }