以编程方式检查特定 Windows 机器当前是否正在被人类使用的最简单方法是什么?
我正在考虑为我们相当有限的互联网连接编写一个“礼貌监视器”——基本上是一种随时查看当前谁在积极使用互联网的方法,因此当有人需要下载大文件时,他们可以最大限度地减少烦恼给其他人(并将这些统计数据保留在历史上,以便可以预测上行链路何时不会太滞后)。我正在尝试收集多种证据来源,然后可以使用这些证据来推断活动。
对于 Windows 用户来说,能够查看他们是否在打字或移动鼠标,或者其他一些等效的活动度量是非常有用的。我已经考虑过使用System.Diagnostics.Process类来查看某些进程是否正在运行(在线游戏和其他占用大量带宽的应用程序)以及它们何时启动。我想如果在过去的半小时内启动了一堆常见的用户态进程(firefox、iTunes 等)中的任何一个,那么可以合理地打赌,椅子上坐着一个肉袋在做某事。一旦我检测到活动,我就会向服务器发送一个微小的 HTTP POST 请求(说“嘿,我还活着,正在做某事!”),并且在我的 Linux 机器上运行的 web 应用程序会更新以显示用户处于活动状态。
我考虑过使用 IM 状态,但不同的 IM 客户端似乎具有不同级别的操作系统集成——人们似乎并没有尽可能多地更新这些。像所有优秀的 Web 2.0 公民一样,我当然也在使用 Twitter。;)
免责声明:我是一个避免使用 Windows 的 UNIX 和 Mac 人。我在 Mono 中摆弄过 .NET,但之前从未接触过 Win32 API。要温柔。