Windows 7 작업 스케줄러를 사용하면 컴퓨터가 유휴 상태 일 때 작업을 실행할 수 있지만 컴퓨터가 유휴 상태에서 재개되거나 더 이상 유휴 상태가 아닌 경우 작업을 실행하는 확실한 방법이없는 것 같습니다.
컴퓨터가 더 이상 유휴 상태가 아닌 경우 Windows (이벤트 로그)에서 일부 이벤트가 발생 했습니까? 또는 컴퓨터가 더 이상 유휴 상태가 아니라는 사실을 파악하고 예약 된 작업으로 이에 응답합니까?
어떻게해야합니까?
또는 최악의 경우 컴퓨터가 유휴 상태로 들어가거나 나올 때 명령이나 이벤트를 호출 할 수있는 명령 줄 프로그램이 있습니까?
[업데이트 :] Diogo Rocha에 대한 나의 회신 방식은 효과적입니다. 이 스크립트에서 py2exe를 통해 null 실행 파일을 만들었습니다.
import sys
import time
#restart a pause every twenty seconds, with two functions that call each other.
def call_pause():
pause()
def pause():
time.sleep(20)
call_pause()
call_pause()
-내 보낸 HTML 인 Windows에서 예약 된 작업을 설정합니다.
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2012-04-27T17:40:46.8871631</Date>
<Author>GENIUS-BREATH-COMPY</Author>
<Description>This task runs ProgA when the computer enters an idle state, and terminates ProgA when the computer *leaves* an idle state. The is all for scheduled TaskB, which periodically runs a batch that tests whether ProgA is running. If ProgA is not running (because this task terminated it), ProgB runs (as the computer is NOT idle). If ProgA *is* running, TaskB's batch does not run ProgB.</Description>
</RegistrationInfo>
<Triggers>
<IdleTrigger>
<Enabled>true</Enabled>
</IdleTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>S-1-5-18</UserId>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>true</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<Duration>PT1M</Duration>
<WaitTimeout>PT0S</WaitTimeout>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>true</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>true</RunOnlyIfIdle>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
<Priority>7</Priority>
<RestartOnFailure>
<Interval>PT1M</Interval>
<Count>3</Count>
</RestartOnFailure>
</Settings>
<Actions Context="Author">
<Exec>
<Command>C:\path_to\nullExecutable</Command>
</Exec>
</Actions>
</Task>
그리고 내 컴퓨터를 15 분 동안 유휴 상태로 두었습니다. 작업 관리자는 null 실행 파일이 실행 중임을 보여줍니다. 마우스를 움직이 자마자 컴퓨터가 유휴 상태가되어 작업 목록에서 null 실행 파일이 사라졌습니다.
여기에서 pslist (-accepteula 스위치를 사용하여 컴퓨터에서 실제로 프로그램을 실행하도록)를 사용하는 작업 (또는 Python 및 py2exe로 수행하는 프로그램)을 설정해야합니다. null exe가 실행 중인지 확인하십시오. 실행 중이면 pslist가 오류없이 실행되었으므로 % ERRORLEVEL % 환경 변수가 0으로 설정됩니다. 해당 환경 변수가 1이면 오류와 함께 실행되었습니다 (실행 파일을 찾지 못했습니다). 컴퓨터가 유휴 상태 가 아닌 경우 다른 작업을 실행하기 위해 배치 스크립트에서 해당 환경 변수를 이용하고 있습니다 .