Posts tagged system power notification
How to handle system power change notifications?
2![]()
Today i was watching one movie a in HP QuickPlay application. In the mean while, the playback suddenly stopped and it showed a messagebox that the battery is running out.

At that moment i noticed that i didn’t connected the power cord. But how did the application identified the battery is critical?
![]()
When the power status changes the system broadcast the message – WM_POWERBROADCAST. Just handle the message and you’ll get notified about power related events. Have a look at the code snippet.
For handling the message, modify the message map as follows.
BEGIN_MESSAGE_MAP(CDialogDlg, CDialog) ... ON_MESSAGE( WM_POWERBROADCAST, OnPowerBroadcast ) END_MESSAGE_MAP()
Now add function – LRESULT OnPowerBroadcast( WPARAM wParam, LPARAM lParam ) to your dialog class with body as follows.
// Handle Power Event Notifications.
LRESULT CDialogDlg::OnPowerBroadcast( WPARAM wParam,
LPARAM lParam )
{
// Check whether the battery is low.
if( PBT_APMBATTERYLOW == wParam )
{
// Yes. So shut down the operations.
}
return TRUE;
}
There are a lot more notification other than PBT_APMBATTERYLOW that you can check. They are -
- PBT_APMBATTERYLOW – Battery power is low.
- PBT_APMOEMEVENT – OEM-defined event occurred.
- PBT_APMPOWERSTATUSCHANGE – Power status has changed.
- PBT_APMQUERYSUSPEND – Request for permission to suspend.
- PBT_APMQUERYSUSPENDFAILED – Suspension request denied.
- PBT_APMRESUMEAUTOMATIC – Operation resuming automatically after event.
- PBT_APMRESUMECRITICAL – Operation resuming after critical suspension.
- PBT_APMRESUMESUSPEND – Operation resuming after suspension.
- PBT_APMSUSPEND – System is suspending operation.
![]()
Well, don’t ask me – “Which movie you was keenly watching?”
![]()
Targeted Audience – Beginners.