Запустите exe, когда компьютер неактивен в течение некоторого времени.

Запустите exe, когда компьютер неактивен в течение некоторого времени.

Следуя совету, данному мне вэтот вопросЯ задал этот вопрос. Итак, у меня есть exe-файл, который я хочу запустить после того, как компьютер бездействует (под бездействием я не имею в виду сон, я имею в виду неактивность или неиспользование) в течение некоторого времени, скажем, 30 минут. Как только истечет время «бездействия», я хочу, чтобы приложение запустилось. Скажем, мой ПК настроен только на опцию «Сон экрана после» в параметрах питания без спящего режима компьютера, поэтому ПК не переходит в спящий режим или экран не блокируется, если я не заставлю это сделать с помощью клавиш Windows+L, и я хочу сохранить эти настройки такими, какие они есть. Я хочу определить период времени бездействия, и как только период времени бездействия будет достигнут, я хочу запустить exe-файл. Есть идеи, как это можно сделать?

РЕДАКТИРОВАТЬ:

Я выполнил шаги, указанные в ответах:

Создал новую задачу, добавил триггер, установил его на событие: при простое и создал задачу. На вкладке условий указал, что задача ждет 1 мин, чтобы стать бездействующей (вместо 10 мин просто для проверки).

Но затем я жду более 10 минут, и задача так и не запускается на ПК1, но запускается на другом ПК2. Я проверил в Интернете и обнаружил, что это PowerCfg -requestsпокажет, что мешает ПК перейти в режим ожидания, и когда я запускаю его на ПК2, ничего не возвращается, но когда я запускаю его на ПК1, я получаю это "Устаревший вызов ядра" Водитель.

Итак, я использовал Powercfg -requestsoverride, но когда я запускаю powercfg -requestsoverride Driver "Legacy Kernel Caller" System, он успешно выполняется и я нахожу его в Powercfg -requestsoverrideсписке, но затем powercfg -requestsон все равно отображается [DRIVER] Legacy Kernel Callerвнизу SYSTEM:, и задача никогда не запускается. Какой-нибудь совет, пожалуйста?

решение1

То, что вы хотите, легко. Вы можете сделать это с помощью планировщика задач.

При создании задачи, на Conditionsвкладке, у вас есть возможность start the task if computer is idle for:. Там просто введите желаемое время простоя.

введите описание изображения здесь

Просто запрограммируйте .exe-файл, который вы хотите запускать, укажите нужную вам частоту, а затем используйте состояние ожидания.

решение2

Самое простое решение — использовать старый добрый Планировщик заданий.

Планировщик заданий не только позволяет вам назначать задачи на определенное время и дату, но и может назначать задачи на определенные события, например, при входе в систему и, конечно же, при бездействии.

Создайте новую задачу, добавьте триггер, установите его на событие: при бездействии и создайте задачу. На вкладке условий вы можете указать, как долго задача будет ждать, пока не станет бездействующей (вы устанавливаете это значение в 30 минут).

Кроме того, вы также можете автоматически завершить задачу, когда система снова станет активной, используя Планировщик задач.

решение3

Извините, не на C#, но это достаточно просто. Это идеальная работа для AutoIt:http://autoitscript.com

Вот скрипт, который я для вас набросал. Поместите его в файл .au3, замените notepad на ваш exe, а в поле «Выполнить» укажите полный путь:

#include <Timers.au3>
While 1
   Sleep(10)
   $idleTimer = _Timer_GetIdleTime()
   If $idleTimer > 60000 And Not ProcessExists("notepad.exe") Then
      Run("notepad.exe")
   ElseIf $idleTimer < 10 Then
      ProcessClose("notepad.exe")
   EndIf
WEnd

Ссылка -https://superuser.com/a/700647/1092861

решение4

schtasksДля упрощения задачи можно использовать командную строку:

schtasks /create /tn "My Task" /tr "EXE Application path" /sc onidle /i Number_Of_Minutes_Inactive

Связанный контент