通过监听WM_POWERBROADCAST消息:
小示例:
LRESULT WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if (WM_POWERBROADCAST == message && PBT_APMSUSPEND == wParam)
{
// Going to sleep
}
}
顺便说一下检测计算机是否处于休眠状态
使用CallNtPowerInformation获得数据结构,找到SYSTEM_POWER_CAPABILITIES,进入
SYSTEM_POWER_CAPABILITIES的数据结构,通过检测 HiberFilePresent的值,
如果此成员为TRUE,则存在系统休眠文件。
再说一下如何检测屏幕保护程序
SC_SCREENSAVE:执行System.ini文件的[boot]部分中指定的屏幕保护程序应用程序。
可以拦截SC_SCREENSAVE消息以检查屏幕保护程序是否打开。