ตัวกำหนดเวลางาน Windows 7 อนุญาตให้ฉันเรียกใช้งานเมื่อคอมพิวเตอร์ไม่ได้ใช้งาน แต่ดูเหมือนจะไม่มีวิธีที่ชัดเจนในการเรียกใช้งานเมื่อคอมพิวเตอร์ดำเนินการต่อจากที่ไม่ได้ใช้งานหรือไม่มีการใช้งานอีกต่อไป
แน่นอนมีบางเหตุการณ์ที่เกิดขึ้นใน windows (บันทึกเหตุการณ์?) เมื่อคอมพิวเตอร์ไม่ได้ใช้งานอีกต่อไป? หรือวิธีการในการจับความจริงที่ว่าคอมพิวเตอร์ไม่ได้ใช้งานอีกต่อไปและตอบสนองต่องานที่กำหนดไว้หรือไม่
ฉันจะทำสิ่งนี้ได้อย่างไร
หรือที่แย่ที่สุดมีโปรแกรมบรรทัดคำสั่งอยู่ที่ไหนที่สามารถเรียกใช้คำสั่งหรือเหตุการณ์เมื่อคอมพิวเตอร์เข้า / ออกจากสถานะว่าง
[อัพเดต:] แนวทางในการตอบ Diogo Rocha ของฉันใช้ได้ผล ฉันสร้าง null ที่สามารถเรียกทำงานได้ผ่าน py2exe จากสคริปต์นี้:
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()
- และตั้งค่างานที่กำหนดเวลาไว้ใน Windows ซึ่งเป็น HTML ที่ส่งออก:
<?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 จะหายไปจากรายการงาน
จากที่นี่เป็นเรื่องของการตั้งค่างาน (หรือโปรแกรม - ที่ฉันทำกับ Python และ py2exe) ที่ใช้ pslist (ที่มีสวิตช์ -accepteula เพื่อให้คอมพิวเตอร์ที่ใช้งานจริงจะเรียกใช้โปรแกรม) ตรวจสอบว่า exe exe ทำงานหรือไม่ หากกำลังทำงานอยู่ตัวแปรสภาพแวดล้อม% ERRORLEVEL% จะถูกตั้งค่าเป็น 0 เนื่องจาก pslist รันโดยไม่มีข้อผิดพลาด หากตัวแปรสภาพแวดล้อมนั้นเป็น 1 มันจะวิ่งไปพร้อมกับข้อผิดพลาด (ไม่พบการปฏิบัติการที่เรียกใช้) ฉันใช้ประโยชน์จากตัวแปรสภาพแวดล้อมในชุดสคริปต์เพื่อเรียกใช้งานอื่นหากคอมพิวเตอร์ไม่ได้ใช้งาน