Почему всплывающие подсказки задерживаются, когда экран заблокирован? - PullRequest
2 голосов
/ 20 августа 2011

Приложение, которое я написал, отображает всплывающую подсказку (используя NotifyIcon.ShowBalloonTip()), когда происходит определенное событие. Это также может произойти, когда система заблокирована.

В этом случае всплывающая подсказка не отображается сразу после ее разблокировки или нет - в обоих случаях все будет хорошо и имеет смысл. Тем не менее, он отображается через некоторое время - иногда более получаса.

Это поведение очень раздражает, и я хотел бы знать, есть ли способ предотвратить это, кроме проверки, заблокирован ли экран перед отображением всплывающей подсказки.

1 Ответ

1 голос
/ 28 декабря 2011

Уведомления панели задач (это официальная терминология) связана с хитрой логикой.

  1. Уведомления отображаются либо сразу, либо после выхода из определенных состояний , например, когда компьютер заблокирован (или играет в полноэкранную игру):

    http://blogs.msdn.com/b/oldnewthing/archive/2005/01/10/349894.aspx

  2. В Vista и более поздних версиях уведомления отображаются только в течение 9 секунд , и это не настраивается:

    http://blogs.msdn.com/b/oldnewthing/archive/2011/05/18/10165605.aspx

  3. В первом часе, когда пользователь впервые вошел в систему , всплывающие уведомления не отображаются вообще:

    http://msdn.microsoft.com/en-us/library/windows/desktop/ee330740(v=vs.85).aspx

Самое главное, Windows не гарантирует, что пользователь их увидит. В Windows UX Guidelines указано:

Не думайте, что пользователи увидят ваши уведомления . Пользователи не увидят их когда:

  • Они погружены в свою работу.
  • Они не обращают внимания.
  • Они далеко от своего компьютера.
  • Они запускают полноэкранное приложение.
  • Администратор отключил все уведомления для своего компьютера.

В нем также указывается, что пользователь может не видеть сообщения во времени, и в этом случае вы должны удалить свои сообщения, когда они больше не актуальны . Вы можете сделать это, позвонив по номеру ShowBalloonTip(0, String.Empty, String.Empty, ToolTipIcon.None). Я думаю, что делать это - ваш лучший выбор, чтобы не показывать ненужные воздушные шары.

...