我希望能够查询当前登录的用户是否在他们的 PC 上空闲 - 即他们的 PC 认为他们是“不活动的”......问题是有很多方法可以做到这一点。是否有一个通用的:“这台计算机处于空闲/非活动状态” - 我正在考虑使用电源子系统使用的任何度量......
我的想法是使用 WMI/Powershell,但我也可以在 C# 中使用 .NET 调用——我宁愿不要!
很抱歉对此有点含糊,我很高兴有人将我的问题编辑成更有意义的东西!
麦克风
我希望能够查询当前登录的用户是否在他们的 PC 上空闲 - 即他们的 PC 认为他们是“不活动的”......问题是有很多方法可以做到这一点。是否有一个通用的:“这台计算机处于空闲/非活动状态” - 我正在考虑使用电源子系统使用的任何度量......
我的想法是使用 WMI/Powershell,但我也可以在 C# 中使用 .NET 调用——我宁愿不要!
很抱歉对此有点含糊,我很高兴有人将我的问题编辑成更有意义的东西!
麦克风
如果您愿意破解它并寻找屏幕保护程序来确定不活动状态,您不妨使用 powershell 查看会话是否处于非活动状态(即计算机被锁定):
它使用终端服务接口来查看用户是否连接到会话。这是因为在现代版本的 Windows 中,所有本地用户都被视为计算机的控制台会话。感兴趣的两种状态是:
由于它基于旧的 qwinsta 功能而不是完全 OO,如果您想要一个布尔值(即 - 包含“Active”),则需要进行一些字符串操作。
要获得准确的数字(以及屏幕保护程序本身通常由什么驱动),请查看LastInputInfo() win32 API 调用,但您需要在用户的上下文中运行它,如果您需要远程监控,这通常会破坏交易。这是 MSDN 文章:http: //msdn.microsoft.com/en-us/library/ms646302 (VS.85).aspx
不,是简单的答案。
我过去曾使用 WMI 列出正在运行的进程并寻找屏幕保护程序。如果屏幕保护程序正在运行,它们在某种意义上是不活动的,尽管您仍然无法判断它们是否让应用程序运行。您可以检查诸如 CPU 和/或磁盘活动之类的内容,但很难从这些内容中得到明确的答案。
JR