发送 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 代码是否表明您确实处理了消息
我有一个 Windows 应用程序监控 Windows power management events
如何手动将此类事件发送到进程以进行测试,而不是让笔记本电脑进入睡眠或休眠状态?例如,有没有办法 post PBT_APMSUSPEND 到一个进程?
您可以使用 SendMessage
并使用收件人应用程序主 window 句柄作为目标来发送消息,并相应地设置参数。
您可能对 PBT_POWERSETTINGCHANGE
有疑问,其中 lParam
是指向结构的指针。 (Windows 通常会将此类结构相应地复制到其他进程,但由于这是一条您不应该发送给自己的消息,因此处理方式可能有所不同。)
无论如何,测试真实场景会更加谨慎,例如在虚拟机中。 虽然您可以测试您的应用程序对特定消息的响应,但仍有一些方面未涵盖
- 您需要注册的一些通知(
RegisterPowerSettingNotification
) - 通知的顺序和时间
- 分配的响应时间
- OS 的行为取决于您的 return 代码是否表明您确实处理了消息