Следуя совету, данному мне вэтот вопросЯ задал этот вопрос. Итак, у меня есть 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
решение4
schtasks
Для упрощения задачи можно использовать командную строку:
schtasks /create /tn "My Task" /tr "EXE Application path" /sc onidle /i Number_Of_Minutes_Inactive