CBattery Non-MFC Class
CBattery is a non-MFC class wrapper for the battery related Windows Power
Management API functions. It may be used by notebook/laptops system utilities
developed with Visual C++.

CBattery implements the following public methods:
- BOOL SystemPowerStatusLoaded()
- BOOL ReloadSystemPowerStatus()
- SYSTEM_POWER_STATUS
SystemPowerStatus()
- CBattery::AC_LINE_STATUS
ACLineStatus()
- CBattery::BATTERY_FLAG
BatteryFlag()
- CBattery::BOOL BatteryCharging()
- BYTE BatteryLifePercent()
- long BatteryFullTime()
- long BatteryLifeTime()
- BOOL BatteryIsUnknown()
- BOOL BatteryIsCharging()
- CBattery::DEVICE_POWER_STATE
GetDevicePowerState()
- void SetDevice(HANDLE hDevice)
- HANDLE GetDevice()
CBattery contains the following public constants:
- Line status:
ACLS_OFFLINE
ACLS_ONLINE
ACLS_UNKNOWN
- Battery status flags:
BF_HIGH
BF_LOW
BF_CRITICAL
BF_CHARGING
BF_NO_BATTERY
BF_UNKNOWN
- Device power state:
DPS_OFF
DPS_ON
DPS_UNKNOWN
- General constants:
UNKNOWN_BATTERY_LIFE_PERCENT
UNKNOWN_BATTERY_FULL_TIME
UNKNOWN_BATTERY_LIFE_TIME
UNKNOWN_DEVICE_POWER_STATE
Notes:
- The system is only capable of estimating BatteryFullTime based on
calculations on BatteryLifeTime and BatteryLifePercent. Without
smart battery subsystems, this value may not be accurate enough to be useful.
- The class does not use the
Sysinfo OCX control.
- The system broadcasts the PBT_APMPOWERSTATUSCHANGE
event to all applications when the power status changes. When your application
receives this event, it should call the methods of the class again to
determine what changed.
- Power management specifications
and white papers from the OnNow initiative home page are located at www.microsoft.com/hwdev/onnow.htm.
- The PBT_* messages are
documented in the SDKs PBT.H.
- An application can use CBattery::GetDevicePowerState
to determine whether a disk or other device is spun up. If the device is not
spun up, the application should defer accessing it.
- For more details about APM, one
should check the Platform SDK: Hardware.
- Unfortunately, power management
features dont work in Windows NT 4.0! However, if youre using a
specialized version of Windows NT, modified by your computer manufacturer, the
methods may work.
- The demo included application
does not use all the all methods implemented in the CBattery class. Check the
Battery.cpp and Battery.h files for the class source code.
Downloads
Download source - 2 KbDownload demo application - 40 Kb

Comments
There are no comments yet. Be the first to comment!