#windows #user32
#Windows #пользователь32
Вопрос:
У меня есть приложение Windows, которое отслеживает события управления питанием Windows
Как вручную отправлять такие события в процесс для целей тестирования, а не переводить ноутбук в спящий режим или в спящий режим? Есть ли способ отправить PBT_APMSUSPEND в процесс, например?
Ответ №1:
Вы можете отправить сообщение с соответствующими параметрами, используя SendMessage
, используя дескриптор главного окна приложения получателя в качестве целевого.
У вас могут возникнуть проблемы с PBT_POWERSETTINGCHANGE
, где lParam
— указатель на структуру. (Windows обычно копирует такие структуры в другие процессы соответствующим образом, но поскольку это сообщение, которое вы не должны отправлять самостоятельно, оно может обрабатываться по-другому.)
В любом случае было бы разумнее протестировать реальный сценарий, например, на виртуальной машине. Хотя вы можете проверить реакцию своих приложений на конкретное сообщение, есть аспекты, которые это не охватывает
- Для некоторых уведомлений необходимо зарегистрироваться (
RegisterPowerSettingNotification
) - Порядок и время получения уведомлений
- Отведенное время отклика
- поведение ОС в зависимости от того, указывает ли ваш код возврата, что вы обработали сообщение или нет