监视Windows XP上的显示器电源事件
在Windows上,只有专注的应用程序通过WM_SYSCOMMAND
消息( wParam
设置为SC_MONITORPOWER
, lParam
表示新的电源状态)接收显示器电源事件。
在Windows Vista和更高版本中,可以通过使用GUID_SESSION_DISPLAY_STATUS
GUID调用RegisterPowerSettingNotification
函数来向任何应用程序通知显示器电源事件。
在应用程序级别(即不使用在内核模式下运行的代码),是否有办法在Windows XP上实现相同的结果?
你所需要做的就是处理WM_SYSCOMMAND
。 我能想到的选项:
为此使用SetWindowsHookEx
(使用WH_CBT
)。
将DLL注入到每个挂钩CreateProcess的进程中,并将其注入到所有将来的进程中,实质上挂钩整个系统。 上述的DLL将WM_SYSMESSAGE
当前进程中的所有窗口,并且可以从那里处理WM_SYSMESSAGE
。
你不能只处理你的WindowProc中的消息WM_POWERBROADCAST,一旦收到,调用GetSystemPowerStatus?
链接地址: http://www.djcxy.com/p/47477.html