2

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

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

这种行为非常烦人,我想知道是否有办法阻止它,除了在显示气球提示之前检查屏幕是否被锁定。

4

1 回答 1

1

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

  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 Guidelines中,他们声明:

不要假设用户会看到您的通知。用户在以下情况下不会看到它们:

  • 他们沉浸在他们的工作中。
  • 他们没有注意。
  • 他们远离电脑。
  • 他们正在运行全屏应用程序。
  • 他们的管理员已关闭其计算机的所有通知。

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

于 2011-12-27T21:13:38.067 回答