监视Windows XP上的显示器电源事件

在Windows上,只有专注的应用程序通过WM_SYSCOMMAND消息( wParam设置为SC_MONITORPOWERlParam表示新的电源状态)接收显示器电源事件。

在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

    上一篇: Monitoring display power events on Windows XP

    下一篇: Will a Windows bug check (BSOD) turn on the monitor?