Environment: Visual C++ 6 SP3
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.