遵循給我的建議這個問題我提出了這個問題。所以我有一個exe,我想在電腦空閒(我所說的空閒不是指睡眠,我的意思是不活動或不被使用)後運行一段時間,比如說30分鐘。一旦達到“非活動”超時,我希望應用程式運行。說我的電腦設置為在電源選項中只有“屏幕睡眠後”選項,沒有計算機睡眠,因此電腦不會進入睡眠狀態或屏幕鎖定屏幕,除非我使用 Windows+L 鍵強制它,並且我想保持這些設置不變。我想偵測不活動時間段,一旦達到不活動時間段,我想執行一個 exe。知道如何做到這一點嗎?
編輯:
我已按照答案中提供的步驟進行操作:
建立一個新任務,新增一個觸發器,將其設為 event: on Idle 並建立該任務。在條件標籤中,指定任務等待 1 分鐘才能變為空閒狀態(而不是僅等待 10 分鐘進行測試)。
但我等待了10多分鐘,任務從未在PC1上觸發,但在另一台PC2上觸發。我在網上檢查過,發現它PowerCfg -requests
會顯示是什麼阻止了 PC 處於空閒狀態,當我在 PC2 上運行它時,沒有任何返回,但當我在 PC1 上運行它時,我得到了這個“舊版內核呼叫程式“ 司機。
所以我使用了Powercfg -requestsoverride
,但是當我運行時powercfg -requestsoverride Driver "Legacy Kernel Caller" System
,它成功了,我在Powercfg -requestsoverride
列表中找到了它,但powercfg -requests
它仍然顯示[DRIVER] Legacy Kernel Caller
在下面SYSTEM:
,並且任務從未觸發,請問有什麼建議嗎?
答案1
答案2
最簡單的解決方案是使用舊的任務規劃程序。
任務規劃程式不僅允許您在某些時間日期設定任務,而且實際上還可以在某些事件上設定任務,例如登入時,是的,也可以在空閒時設定任務。
建立一個新任務,新增觸發器,將其設為 event: on Idle 並建立任務。在條件標籤中,您可以指定任務等待空閒的時間(將其設定為 30 分鐘)。
此外,您還可以在系統再次啟動時自動終止任務(所有這些都來自任務規劃程式)。
答案3
抱歉,不是在 C# 中,但很容易。這對於 AutoIt 來說是一個完美的工作:http://autoitscript.com
這是我為您編寫的腳本。將其放入 .au3 檔案中,用您的 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