Ejecute exe cuando la computadora esté inactiva por algún tiempo

Ejecute exe cuando la computadora esté inactiva por algún tiempo

Siguiendo un consejo que me dieron enesta preguntaHe hecho esta pregunta. Así que tengo un archivo ejecutable que quiero ejecutar después de que la computadora esté inactiva (por inactiva no me refiero a suspensión, me refiero a inactiva o no en uso) durante algún tiempo, digamos 30 minutos. Una vez que llegue el tiempo de espera "inactivo", quiero que se ejecute la aplicación. Decir que mi PC está configurada para tener solo la opción "Pantalla suspendida después" en las opciones de Energía sin suspensión de la computadora, por lo que la PC no entra en suspensión o la pantalla se bloquea a menos que la fuerce usando las teclas Windows+L. , y quiero mantener esta configuración como está. Quiero detectar un período de tiempo de inactividad y una vez que se alcanza el período de tiempo de inactividad, quiero ejecutar un archivo ejecutable. ¿Alguna idea de cómo se puede hacer esto?

EDITAR:

He seguido los pasos proporcionados en las respuestas:

Creó una nueva tarea, agregó un activador, lo configuró en evento: en inactivo y creó la tarea. En la pestaña de condiciones, se especifica que la tarea espera 1 minuto para quedar inactiva (en lugar de 10 minutos solo para probar).

Pero luego espero más de 10 minutos y la tarea nunca se activa en la PC1, sino en otra PC2. Lo revisé en línea y descubrí que PowerCfg -requestsmuestra lo que impide que la PC esté inactiva y cuando lo ejecuto en la PC2 no vuelve nada, pero cuando lo ejecuto en la PC1 aparece esto "Llamador de kernel heredado" conductor.

Entonces lo usé Powercfg -requestsoverride, pero cuando lo ejecuto powercfg -requestsoverride Driver "Legacy Kernel Caller" System, tiene éxito y lo encuentro en la Powercfg -requestsoverridelista, pero powercfg -requestsaún aparece [DRIVER] Legacy Kernel Callerdebajo SYSTEM:y la tarea nunca se activa. ¿Algún consejo, por favor?

Respuesta1

Lo que quieres es fácil. Puedes hacerlo usando el programador de tareas.

Al crear una tarea, en la Conditionspestaña, tiene la opción de start the task if computer is idle for:. Allí simplemente ingrese cuánto tiempo de inactividad desea.

ingrese la descripción de la imagen aquí

Simplemente programe el .exe que desea ejecutar, con qué frecuencia lo desea y luego use la condición de inactividad.

Respuesta2

La solución más sencilla es utilizar el antiguo Programador de tareas.

El Programador de tareas no solo le permite configurar tareas en fechas determinadas, sino que también puede configurar tareas en ciertos eventos, como al iniciar sesión y, sí, también cuando está inactivo.

Cree una nueva tarea, agregue un activador, configúrelo en evento: en inactivo y cree la tarea. En la pestaña de condiciones, puede especificar cuánto tiempo espera la tarea para quedar inactiva (lo establece en 30 minutos).

Además, también puede finalizar automáticamente la tarea cuando el sistema se active nuevamente, todo desde el Programador de tareas.

Respuesta3

Lo siento, no en C#, pero es bastante fácil. Este es un trabajo perfecto para AutoIt:http://autoitscript.com

Aquí tienes un guión que preparé para ti. Colóquelo en un archivo .au3, reemplace el bloc de notas con su exe y, para Ejecutar, incluya la ruta completa:

#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

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

Respuesta4

Puede utilizar schtasksdesde el símbolo del sistema para facilitar la tarea:

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

información relacionada