c# - 检测屏幕保护程序是否处于事件状态和/或用户是否已在 Windows 中锁定屏幕

标签 c# windows

我正在编写一个应用程序,有时会以 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/

相关文章:

windows - 如何使用 CMake 生成 Windows DLL 版本控制信息?

c# - 在 Windows 中使用命名管道 (C++/C#)

c# - 如何获得圆并集圆周的一系列点

c# - 为 INSERT 方法添加更多文本框

windows - 如何在 Windows 上使用 'rhc' 命令 ssh 进入 openshift 应用程序?

python - printing\78 在控制台发出哔声

windows - Windows 7下64位R的优化问题

c# - 验证 ICD-10-CM

c# - 从 DbDataReader 读取/序列化时避免代码重复?

c# - 如何通过所有消息浏览 Websphere MQ 队列?