如何检测我的应用程序在c#中是空闲的?

可能重复:
检查应用程序是否在一段时间内处于空闲状态并将其锁定

假设我有一个用C#开发的Windows产品。 现在需要的是,如果该应用程序正在运行并且空闲,并且当用户再次尝试与该应用程序交互时,则会出现登录屏幕。 如何检测我的应用程序在运行时是否处于空闲状态? 请指导我完成这项工作。

  1. 为您的应用程序添加计时器控件。
  2. 订阅mouseover和keydown事件 – 当它们触发时,重置计时器。
  3. 当计时器触发时(即鼠标未移动且按键未被按下x时间),请锁定屏幕/提示以进行登录。

我想你可以从下面的链接中获得解决方案

应用空闲状态

Windows表单应用程序空闲

在Windows窗体中检测应用程序空闲状态

您可以使用Control.LostFocus记录用户导航时的时间,然后使用Control.GotFocus检查已经过了多少时间来确定他们是否需要登录。

这是我的简单解决方案:

Point cursorPoint; int minutesIdle=0; private bool isIdle(int minutes) { return minutesIdle >= minutes; } private void idleTimer_Tick(object sender, EventArgs e) { if (Cursor.Position != cursorPoint) { // The mouse moved since last check minutesIdle = 0; } else { // Mouse still stoped minutesIdle++; } // Save current position cursorPoint = Cursor.Position; } 

您可以设置以60000间隔运行的计时器。 通过这种方式,您将知道用户不移动鼠标的分钟数。 您也可以在Tick事件本身上调用“isIdle”来检查每个间隔。

捕获Form类对象的leave事件以了解它已失去焦点。