发送 WM_POWERBROADCAST 到其他进程

Send WM_POWERBROADCAST to other process

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

如何手动将此类事件发送到进程以进行测试,而不是让笔记本电脑进入睡眠或休眠状态?例如,有没有办法 post PBT_APMSUSPEND 到一个进程?

您可以使用 SendMessage 并使用收件人应用程序主 window 句柄作为目标来发送消息,并相应地设置参数。

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

无论如何,测试真实场景会更加谨慎,例如在虚拟机中。 虽然您可以测试您的应用程序对特定消息的响应,但仍有一些方面未涵盖

  • 您需要注册的一些通知(RegisterPowerSettingNotification
  • 通知的顺序和时间
  • 分配的响应时间
  • OS 的行为取决于您的 return 代码是否表明您确实处理了消息