看来,当Windows要启动屏幕保护程序或关闭显示器时,它将发送一个WM_SYSCOMMAND
到的最上面的窗口,其中带有wParam
ofSC_SCREENSAVE
(启动屏幕保护程序)或awParam
ofSC_MONITORPOWER
和lParam
1或2(以关闭显示器)。关闭)。然后,此消息将传递到DefWindowProc
,它将实际执行操作。因此,如果您的窗口恰好是最上面的窗口,则可以拦截这些事件并忽略它们(或在将它们传递给之前做任何您想做的事情DefWindowProc
)。
在Windows Vista上,似乎有一种更直观,更可靠的方式来了解显示器电源状态。您调用RegisterPowerSettingNotification
告诉系统向您的窗口发送WM_POWERBROADCAST
消息,消息带有wParam
,PBT_POWERSETTINGCHANGE
并lParam
指向POWERBROADCAST_SETTING
结构。
我无法测试它们中的任何一个,因为我附近没有任何装有Windows的计算机。但是,我希望它们能为您指明正确的方向。
参考文献: