Я создал приложение для Windows на C #, которое открывает форму выигрыша, вводимую пользователем, под названием mywinform.exe. Я хочу выполнить этот mywinform.exe, если пользователь не будет активен в течение периода времени t (без перемещения / ввода с помощью мыши или ввода с клавиатуры). Я пробовал использовать планировщик задач Windows, но он так глючит и совсем ненадежен, особенно когда дело доходит до создания задач с триггерами Idle. Итак, теперь мне интересно, как я могу сделать это на C #, где я хочу иметь приложение или службу для обнаружения неактивности пользователя и запуска mywinform.exe по достижении времени t.
Я проверил и обнаружил, что GetLastInputInfo может сделайте это, как показано в этом сообщении, но я не хочу, чтобы отображалось приложение для обнаружения бездействия пользователя, так что есть ли способ заставить его работать в фоновом режиме или в качестве службы?
Application.Run()
в program.cs. - person Idle_Mind   schedule 17.07.2020Application.Run()
обеспечивает такой цикл сообщений. Цикл должен заканчиваться в нужный момент. Если вы передадите экземплярForm
вApplication.Run
, цикл завершится, когда форма (ваше главное окно) закроется. ИспользуяApplicationContext
, вы можете получить другое событие (например, нажатие горячей клавиши) для выхода из цикла обработки сообщений. Имея цикл сообщений, ваш код без главного окна будет работать правильно с OLE и другими библиотеками, которым нужны скрытые окна только для сообщений. - person Ben Voigt   schedule 17.07.2020