ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


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); 
    };
}
//-------------------------------------------------------------------
 



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.