Как обнаружить, что мое приложение бездействует в C#?

Возможный дубликат:
Проверьте, не используется ли приложение какое-то время, и заблокируйте его.

Предположим, у меня есть продукт для Windows, разработанный на C#. Теперь возникает требование, что если это приложение работает и бездействует, и когда пользователь снова пытается взаимодействовать с этим приложением, появляется экран входа в систему. Как определить, что мои приложения бездействуют, когда работают? Пожалуйста, помогите мне завершить работу.

5 ответов

Решение
  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 интервалов. Таким образом, вы будете просто знать, сколько минут пользователь не двигает мышей. Вы также можете вызвать isIdle для самого события Tick для проверки каждого интервала.

Захватите событие выхода объекта класса Form, чтобы узнать, что он потерял фокус.

Другие вопросы по тегам