|
|
||||
Tips > |
|||||
GetSystemPowerStatus でバッテリー状態取得 |
更新 : 2014/09/21 |
||||
|
|
||
解説: ノートパソコンを使っていると、バッテリーの充電状態が気になります。これを調べる関数がWin32API にはあります。 まず SYSTEM_POWER_STATUS という構造体にバッテリーの状態を取得してから、BatteryFlagで充電状態を調べます。 ちょっと寄り道: SYSTEM_POWER_STATUS構造体 typedef struct _SYSTEM_POWER_STATUS { BYTE ACLineStatus; // AC 電源状態 BYTE BatteryFlag; // 充電状態 BYTE BatteryLifePercent; // 電源の残りの割合 BYTE Reserved1; // 予約 DWORD BatteryLifeTime; // バッテリーの残り時間 DWORD BatteryFullLifeTime; // フル充電時のバッテリーの寿命(不明な場合は -1) } SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS; BatteryFlag 1 高 2 低 4 危機的 8 充電中 128 システムバッテリーない 256 不明な状態電 使用例: アプリケーションを起動して Button をクリックすると Memo にバッテリーの充電状態が表示されます。 準備としては、Button、Memo を適当に配置するだけです。 コーディングでは、Button1 の OnClick イベントで、まず SYSTEM_POWER_STATUS 構造体にシステム電源の状態を取得します。次に BatteryFlag で充電状態を調べ、Memo1 に出力しています。 今回は、バッテリーの充電を調べましたが、時間がある方は、AC 電源の状態など他の情報を SYSTEM_POWER_STATUS 構造体から取得してみてください。 //------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { // SYSTEM_POWER_STATUS 構造体でシステム電源状態取得 SYSTEM_POWER_STATUS sps; if (GetSystemPowerStatus(&sps) != FALSE) { // デスクトップは 128 No System battery が取得される Memo1->Lines->Add(sps.BatteryFlag); }; } //------------------------------------------------------------------- |