Подтвердить что ты не робот

Обнаружение незанятых пользователей в Winforms

Я хочу приостановить свою программу, если пользователь неактивен в течение 5 минут. Неактивным я имею в виду, что за это время не нажал их мышь или клавиатуру (в том числе и вне программы!). Любые начальные точки?

4b9b3361

Ответ 1

В течение таймера вы можете p/invoke GetLastInputInfo(), который будет возвращать число ms, поскольку вход был обнаружен у пользователя, во всех процессах в текущей сессии.

Ответ 2

Этот вопрос очень похож на старый вопрос:

.NET-эквивалент для GetLastInputInfo?

Что касается хорошей статьи, описывающей несколько разных опций в С#:

http://www.codeproject.com/KB/cs/uim.aspx

Если вы не возражаете использовать P/Invoke и ограничены работой в системах Windows, то использование P/Invoke для вызова GetLastInputInfo(), вероятно, является самым простым методом выполнения того, что вы хотите.

Ответ 3

вы можете переопределить WndProc и искать сообщение WM_IDLE

Ответ 4

Я использовал библиотеку GMA.UserActivityMonitor некоторое время назад, чтобы достичь этого.

Ответ 5

Похоже, я нашел решение для вашей проблемы, посмотрите:

Как обнаружить приложение Winforms было неактивным в течение определенного времени и ответа user34660,

Для вашего приложения необходимо изменить:

const int MinuteMicroseconds = 60000;

в

const int MinuteMicroseconds = 300000;

Это просто время, но в мс.

Работает хорошо для моего приложения Windows Forms.