问题描述
我有一个监视Windows power management events的Windows应用程序
如何手动将此类事件发送到过程中以进行测试,而不是使笔记本电脑进入睡眠或休眠状态?例如,是否可以将PBT_APMSUSPEND发布到流程中?
解决方法
您可以使用收件人应用程序主窗口句柄作为目标,使用SendMessage
发送带有相应设置的参数的消息。
您可能对PBT_POWERSETTINGCHANGE
有疑问,其中lParam
是指向结构的指针。 (Windows通常会将这些结构相应地复制到其他进程,但是由于这是您不应该发送给自己的消息,因此处理方式可能有所不同。)
无论如何,要测试实际情况,还是要更加谨慎。在虚拟机中。 虽然您可以测试您的应用程序对特定消息的响应,但是某些方面并未涵盖
- 您需要注册(
RegisterPowerSettingNotification
)的某些通知 - 通知的顺序和时间
- 分配的响应时间
- 操作系统的行为取决于您的返回码是否表明您确实处理了消息