发送WM_POWERBROADCAST到其他进程

问题描述

我有一个监视Windows power management events的Windows应用程序

如何手动将此类事件发送到过程中以进行测试,而不是使笔记本电脑进入睡眠或休眠状态?例如,是否可以将PBT_APMSUSPEND发布到流程中?

解决方法

您可以使用收件人应用程序主窗口句柄作为目标,使用SendMessage发送带有相应设置的参数的消息。

您可能对PBT_POWERSETTINGCHANGE有疑问,其中lParam是指向结构的指针。 (Windows通常会将这些结构相应地复制到其他进程,但是由于这是您不应该发送给自己的消息,因此处理方式可能有所不同。)

无论如何,要测试实际情况,还是要更加谨慎。在虚拟机中。 虽然您可以测试您的应用程序对特定消息的响应,但是某些方面并未涵盖

  • 您需要注册(RegisterPowerSettingNotification)的某些通知
  • 通知的顺序和时间
  • 分配的响应时间
  • 操作系统的行为取决于您的返回码是否表明您确实处理了消息