次の電源状態が取得できます。(戻る)
- AC電源か、DC電源か分かる。
- バッテリ(DC電源)のときに充電中か、放電中か分かる。
- バッテリ(DC電源)の残量をパーセントや時間で分かる。
プロトタイプ宣言
BOOL GetSystemPowerStatus( LPSYSTEM_POWER_STATUS lpSystemPowerStatus // SYSTEM_POWER_STATUS 構造体へのポインタ );
構造体
typedef struct _SYSTEM_POWER_STATUS { BYTE ACLineStatus; // AC電源状態 BYTE BatteryFlag; // DC電源状態 BYTE BatteryLifePercent; // DC電源残量(%) BYTE Reserved1; // 予約 DWORD BatteryLifeTime; // DC残り維持時間(秒) DWORD BatteryFullLifeTime; // DCフル維持時間(秒) } SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
サンプル
#include <stdio.h> #include <windows.h> // メイン関数 int main( void ) { SYSTEM_POWER_STATUS sps; LPCTSTR lpAC; LPCTSTR lpDC; if ( GetSystemPowerStatus(&sps) ){ // AC電源の状態 switch ( sps.ACLineStatus ){ case AC_LINE_OFFLINE: lpAC = TEXT("オフライン"); break; case AC_LINE_ONLINE: lpAC = TEXT("オンライン"); break; case AC_LINE_BACKUP_POWER: lpAC = TEXT("バックアップ"); break; default: lpAC = TEXT("不明"); break; } // DC電源の状態 switch ( sps.BatteryFlag ){ case BATTERY_FLAG_HIGH: lpDC = TEXT("良好"); break; case BATTERY_FLAG_LOW: lpDC = TEXT("不足"); break; case BATTERY_FLAG_CRITICAL: lpDC = TEXT("危険"); break; case BATTERY_FLAG_CHARGING: lpDC = TEXT("充電中"); break; case BATTERY_FLAG_NO_BATTERY: lpDC = TEXT("未搭載"); break; default: lpDC = TEXT("不明"); break; } printf( TEXT("AC電源状態:%s\n"), lpAC ); printf( TEXT("DC電源状態:%s\n"), lpDC ); // 充電残量のパーセント(%) if ( sps.BatteryLifePercent == BATTERY_PERCENTAGE_UNKNOWN ){ printf( TEXT("DC電源残量:不明\n") ); } else{ printf( TEXT("DC電源残量:%d%%\n"), sps.BatteryLifePercent ); } // 残り維持時間(秒) if ( sps.BatteryLifeTime == BATTERY_LIFE_UNKNOWN ){ printf( TEXT("残り維持時間:不明\n") ); } else{ printf( TEXT("残り維持時間:%u秒\n"), sps.BatteryLifeTime ); } // フル維持時間(秒) if ( sps.BatteryFullLifeTime == BATTERY_LIFE_UNKNOWN ){ printf( TEXT("フル維持時間:不明\n") ); } else{ printf( TEXT("フル維持時間:%u秒\n"), sps.BatteryFullLifeTime ); } return 0; } printf( TEXT("システムの電源状態を取得できません。\n") ); return 1; }
- Windows 2000 以降で動作します。
- Windows 98 ではコントロールパネルの『電源の管理』の設定により上手く動作しない場合があります。
実行結果
AC電源状態:オンライン DC電源状態:未搭載 DC電源残量:不明 残り維持時間:不明 フル維持時間:不明
- デスクトップのパソコンなのでバッテリ情報は表示されません。
- ノートパソコンなどの機種ならバッテリ情報が表示されると思います。
関連記事
- 電源状態の取得
- CPU使用率の取得
※コメント投稿者のブログIDはブログ作成者のみに通知されます