我正在编写一个应用程序,有时会以 toaster messages 的形式向用户发送通知。 .
如果用户不在,他就看不到通知。所以我想做的是能够检查用户是否锁定了屏幕或者屏幕保护程序是否恰好被激活。
任何在用户看不到时触发的通知都将延迟并在用户重新登录并恢复 session 时显示。
我自己使用的是 Windows 7,但我更喜欢适用于 Windows XP 及更高版本的解决方案。
最佳答案
没有记录的方法来查明工作站当前是否被锁定。但是,您可以在解锁/锁定时收到通知。订阅 SystemEvents.SessionSwitch 事件,您将获得 SessionSwitchReason.SessionLock 和 Unlock。
屏保也很麻烦。当屏幕保护程序打开时,您的主窗口会收到 WM_SYSCOMMAND 消息 SC_SCREENSAVE。您可以调用 SystemParametersInfo 来检查它是否正在运行。您可以在我的回答中找到示例代码 this thread .
没有很好的方法可以查明用户是否睡着了。
关于c# - 检测屏幕保护程序是否处于事件状态和/或用户是否已在 Windows 中锁定屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3953297/