我有一个非 MFC、非 ATL C++ 应用程序,它会定期在系统托盘图标上创建通知气球。如果在 Vista 之前的盒子上,用户锁定屏幕 - 这些新创建的“气球正在排队”,当用户最终重新登录时会造成混乱。可能有几十个或数百个气球在等待。在用户重新登录之前,为每个气球设置的超时不适用!!
所以要解决这个问题,我需要知道:
- 当新气球到达时,有没有办法取消我制作的任何未完成的气球?
- 我是否应该检查“会话锁定”/“屏幕锁定”并在用户不在时停止创建气球?
关于选项#2,我在 Windows 循环中监听什么消息来捕获帐户锁定/会话锁定?我尝试了事件 WM_ENDSESSION,但我的应用表现得好像它没有看到它。那是正确的事件吗?我需要注册吗?
当然,如果有更简单的方法来解决这个问题,我很想知道。当然对于 Vista 和更高版本,NIF_REALTIME uFlags选项可以轻松解决问题。
ps 我很震惊,我在网上找不到带有描述的 Windows 消息列表。我发现的只是一个没有描述的列表,它甚至不是由微软托管的!!!