如何检查是否有人正在使用他们的计算机?

时间:2011-04-06 14:50:03

标签: c# winforms

我有一个程序每分钟都会发布到数据库,以显示它正在运行。这样可以确保程序在个人计算机上运行,​​但它并不能说明该人是否实际上正在使用他们的计算机(计算机可以被锁定,或者该人员可能不在办公室,程序仍在运行并发布到数据库)。

检查此人是否实际上正在使用计算机的最佳方法是什么?

我想到的第一个想法是创建一个MessageBox,每5分钟打开一次,要求用户按“OK”(如果它们存在)。这将提供所需的功能,但会惹恼使用它的任何人的日光。

是否有更多的幕后方法来检测一个人是否在使用他们的电脑?也许检查它是否被锁定,或WinForm应用程序可以告诉鼠标和键盘何时被使用,即使WinForm不是活动窗口?

对此事项的任何建议或帮助表示感谢,谢谢!

附录:我将假设如果没有使用鼠标和键盘,一个人没有使用那个特定的盒子(如果用户正在他们的计算机上观看电影,这将导致误报(该程序将是在办公室环境中使用,因此在特定日期发生这种情况的可能性几乎为零))。

5 个答案:

答案 0 :(得分:2)

您可以为global hooksmouse设置keyboard - WH_KEYBOARD_LL和WH_MOUSE_LL - 这样您就可以监控用户活动 - 只要您的用户不是,就像观看一样一部电影而不是触摸鼠标或键盘..

答案 1 :(得分:1)

我考虑这样做的方法是编写一个位于后台的应用程序,并使用user32.dll监听鼠标和键盘消息,并假设用户不再使用计算机在一定时间后没有听到任何声音。即便如此,他们可能正在观看DVD或其他东西

答案 2 :(得分:1)

http://www.ugolog.com/pages/webcam-motion-detection-for-flash-flex-and-csharp

网络摄像头动作检测+鼠标/键盘挂钩= Super Big Brother app。

答案 3 :(得分:0)

我认为您可以使用屏幕保护程序是否正在运行来检查。

更多信息:http://bytes.com/topic/c-sharp/answers/261540-detecting-screensaver-state

答案 4 :(得分:0)

创建某种Logging以便它向您发送使用日志的最佳方法。通过这种方式,您还可以分析应用程序的主要功能。捕获鼠标移动和钩子可能不会使该盒子上的病毒感到高兴:)