如何判断Windows何时更改显示器电源状态?
看来,当Windows要启动屏幕保护程序或关闭显示器电源,它会发出WM_SYSCOMMAND
的最顶层窗口用wParam
的SC_SCREENSAVE
(启动屏幕保护程序)或wParam
中SC_MONITORPOWER
和lParam
的1或2(将显示器关闭).然后将传递此消息DefWindowProc
,实际上将执行操作.因此,如果您的窗口恰好是最顶层的窗口,您可以拦截这些事件并忽略它们(或者在传递它们之前做任何您想要的事情DefWindowProc
).
在Windows Vista上,似乎有一种更直观,更可靠的方式来了解显示器电源状态.你打电话RegisterPowerSettingNotification
来告诉系统发送您的窗口WM_POWERBROADCAST
与消息wParam
的PBT_POWERSETTINGCHANGE
和一个lParam
指向一个POWERBROADCAST_SETTING
结构.
我无法测试其中任何一个,因为我目前没有附近的Windows计算机.但是,我希望他们能指出你正确的方向.
参考文献:
旧的新事物:在黑暗中摸索并在错误的解决方案中磕磕绊绊
递归钩... - borland.public.delphi.nativeapi.win32 | Google网上论坛
注册电源事件(Windows)