У меня есть приложение M ++, не-ATL C ++, которое обычно создает всплывающие уведомления на значке в системном трее. Если в окнах, предшествующих Vista, пользователь блокирует экран - эти вновь созданные « шары находятся в очереди », что создает беспорядок, когда пользователь наконец-то снова входит в систему. Там могут быть десятки или сотни воздушных шаров, ожидающих , Тайм-аут, установленный для каждого всплывающего окна, не применяется, пока пользователь снова не войдет в систему !!
Итак, чтобы решить эту проблему, мне нужно знать либо:
- Есть ли способ отменить любой выдающийся шар, который я сделал, когда появится новый шар?
- Стоит ли вместо этого проверять наличие "блокировки сеанса" / "блокировки экрана" и прекращать создание всплывающих подсказок в отсутствие пользователя?
Что касается опции №2, какое сообщение я слушаю в цикле Windows, чтобы захватить блокировку учетной записи / блокировку сеанса? Я попробовал событие WM_ENDSESSION, но мое приложение работало так, как будто его не было. Это правильное событие? Нужно ли регистрироваться для этого?
Конечно, если есть более простой способ решить эту проблему, я бы хотел знать. Конечно, для Vista и более поздних версий опция NIF_REALTIME uFlags решает проблему легко.
p.s. Я потрясен, что не могу найти список сообщений Windows онлайн с описаниями. Все, что я нашел, это список без описания , и он даже не был размещен в Microsoft !!!