Führen Sie die EXE aus, wenn der Computer längere Zeit inaktiv war

Führen Sie die EXE aus, wenn der Computer längere Zeit inaktiv war

Nach einem Ratschlag, den ich indiese FrageIch habe diese Frage gestellt. Ich habe also eine EXE, die ich ausführen möchte, nachdem der Computer für einige Zeit, sagen wir 30 Minuten, im Leerlauf war (mit Leerlauf meine ich nicht Ruhezustand, sondern inaktiv oder unbenutzt). Sobald das „Inaktivitäts“-Timeout erreicht ist, soll die Anwendung ausgeführt werden. Angenommen, mein PC ist so eingestellt, dass in den Energieoptionen nur die Option „Bildschirmruhezustand nach“ verfügbar ist, kein Ruhezustand des Computers, sodass der PC nicht in den Ruhezustand wechselt oder der Bildschirm gesperrt wird, es sei denn, ich erzwinge dies mit den Tasten Windows+L, und ich möchte diese Einstellungen so beibehalten, wie sie sind. Ich möchte einen Inaktivitätszeitraum erkennen und nach Ablauf dieses Inaktivitätszeitraums eine EXE ausführen. Irgendeine Idee, wie das gemacht werden kann?

BEARBEITEN:

Ich habe die in den Antworten angegebenen Schritte befolgt:

Eine neue Aufgabe erstellt, einen Auslöser hinzugefügt, ihn auf „Ereignis: bei Leerlauf“ gesetzt und die Aufgabe erstellt. In der Registerkarte „Bedingungen“ angegeben, dass die Aufgabe 1 Minute wartet, bis sie in den Leerlauf wechselt (statt 10 Minuten nur zum Testen).

Aber dann warte ich länger als 10 Minuten und die Aufgabe wird nie auf PC1 ausgelöst, sondern auf einem anderen PC2. Ich habe online nachgeschaut und herausgefunden, dass es PowerCfg -requestszeigt, was den PC davon abhält, im Leerlauf zu sein, und wenn ich es auf PC2 ausführe, kommt nichts zurück, aber wenn ich es auf PC1 ausführe, bekomme ich Folgendes:Legacy-Kernel-Aufrufer"-Treiber.

Also habe ich es verwendet Powercfg -requestsoverride, aber wenn ich es ausführe powercfg -requestsoverride Driver "Legacy Kernel Caller" System, gelingt es, und ich finde es in der Powercfg -requestsoverrideListe, aber dann powercfg -requestswird es immer noch [DRIVER] Legacy Kernel Callerdarunter angezeigt SYSTEM:und die Aufgabe wird nie ausgelöst, irgendwelche Ratschläge, bitte?

Antwort1

Was Sie wollen, ist einfach. Sie können es mit dem Taskplaner tun.

Beim Erstellen einer Aufgabe Conditionshaben Sie unter der Registerkarte die Möglichkeit, Folgendes zu tun start the task if computer is idle for:. Geben Sie dort einfach ein, wie viel Leerlaufzeit Sie möchten.

Bildbeschreibung hier eingeben

Programmieren Sie einfach die EXE-Datei, die Sie ausführen möchten, geben Sie an, wie oft Sie dies möchten, und verwenden Sie dann den Leerlaufzustand.

Antwort2

Die bei weitem einfachste Lösung ist die Verwendung des guten alten Taskplaners.

Mit dem Taskplaner können Sie Aufgaben nicht nur zu bestimmten Uhrzeiten und Daten festlegen, sondern auch bei bestimmten Ereignissen, z. B. bei der Anmeldung und, ja, auch bei Inaktivität.

Erstellen Sie eine neue Aufgabe, fügen Sie einen Auslöser hinzu, setzen Sie ihn auf „Ereignis: bei Leerlauf“ und erstellen Sie die Aufgabe. In der Registerkarte „Bedingungen“ können Sie angeben, wie lange die Aufgabe wartet, bis sie in den Leerlauf eintritt (Sie legen dies auf 30 Minuten fest).

Darüber hinaus können Sie die Aufgabe auch automatisch beenden, wenn das System wieder aktiv wird – und das alles über den Taskplaner.

Antwort3

Leider nicht in C#, aber es ist einfach genug. Dies ist ein perfekter Job für AutoIt:http://autoitscript.com

Hier ist ein Skript, das ich für Sie zusammengestellt habe. Fügen Sie es in eine .au3-Datei ein, ersetzen Sie Notepad durch Ihre EXE-Datei und geben Sie bei „Ausführen“ den vollständigen Pfad an:

#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

Referenz -https://superuser.com/a/700647/1092861

Antwort4

schtasksUm die Aufgabe zu vereinfachen, können Sie Folgendes von der Eingabeaufforderung verwenden :

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

verwandte Informationen