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

本文关键字:我的 应用程序 检测 | 更新日期: 2023-09-27 17:54:32

可能重复:
检查应用程序是否空闲一段时间并锁定

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

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

  1. 将计时器控件添加到应用程序
  2. 订阅mouseover和keydown事件-当它们启动时,重置计时器
  3. 计时器启动时(鼠标(还没动,钥匙也没动按下x时间(,锁定登录屏幕/提示

您可以使用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类对象的离开事件,以知道它已失去焦点。