如何防止托盘通知在不可见时排队

时间:2015-03-11 14:07:53

标签: c# .net winforms notifications system-tray

我有一个.NET应用程序,它在系统托盘中最小化运行,并在发生某些操作时提供通知。当用户未登录或屏幕已锁定时,这些通知显然是排队的,以便用户下次登录时会按顺序显示所有过期的通知。我想做的是,如果用户无法看到通知(已注销或锁定屏幕),则会阻止显示通知。或者,如果更容易,请对其进行配置,以便用户在注销时不会看到他们错过的所有通知。寻找这种情况的最佳实践。感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用SessionSwitchEventHandler来检测工作站是否已锁定。

您可以使用WMI Win32_LogonSession类来查询系统上的所有交互式登录。然后,您可以决定是否要显示通知。

然后再说一次,如果它真的是一个应用程序而不是一个服务,你就无法真正检查用户是否以交互方式登录,因为应用程序进程是交互式登录用户所拥有的(当他们退出,他们拥有的所有进程都被杀死了)