Я хочу приостановить свою программу, если пользователь неактивен в течение 5 минут. Неактивным я имею в виду, что за это время не нажал их мышь или клавиатуру (в том числе и вне программы!). Любые начальные точки?
Обнаружение незанятых пользователей в Winforms
Ответ 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.