为什么当屏幕被锁定时,气球提示会延迟



我编写的一个应用程序在某个事件发生时显示一个气球提示(使用NotifyIcon.ShowBalloonTip())。当系统处于锁定状态时,也可能发生这种情况。

在这种情况下,气球提示在解锁后不会立即显示,或者根本不显示——这两种情况都很好,也很有意义。但是,它会在一段时间后显示——有时超过半小时。

这种行为是非常烦人的,我想知道是否有一种方法来防止它,除了检查屏幕是否被锁定之前显示气球提示

任务栏通知(这是官方术语)具有与它们相关的棘手逻辑。

  1. 通知要么立即显示,要么在从某些状态恢复后显示,例如当PC被锁定(或玩全屏游戏):

    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指南中,他们说:

不要假设用户会看到你的通知。用户不会看到的时候:

  • 他们沉浸在工作中。
  • 他们没有注意到。他们离开了电脑。他们正在运行一个全屏的应用程序。
  • 他们的管理员已经关闭了所有的通知。

它还指出用户也可能无法及时看到消息,在这种情况下,您应该在消息不再相关时取消消息队列。你可以通过调用ShowBalloonTip(0, String.Empty, String.Empty, ToolTipIcon.None)来实现。我认为这样做是你最好的选择,以防止无关的气球显示。

相关内容

  • 没有找到相关文章

最新更新