Questão Lote: Como executar um programa quando o computador está ocioso e parar quando usado?


Eu preciso executar um lote do Windows (ou qualquer outro software de linha de comando faria bem) que iria executar um programa quando o computador ficou ocioso por um minuto e pará-lo quando é usado. Eu obviamente deveria começar de novo quando estiver ocioso novamente.

Alguma ideia? Não foi possível encontrar nada que não use GUI.


4


origem




Respostas:


Este é um trabalho perfeito para o AutoIt: http://autoitscript.com 

Aqui está um roteiro que eu joguei para você. Coloque-o em um arquivo .au3, substitua o bloco de notas pelo seu exe e, para o Run, inclua o caminho completo:

#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

6



Ei Xichael, muito obrigado! Isso resolve meu problema. Agora, se você pudesse me ajudar a entender como eu posso me referir a uma pasta por trás de% appdata%, eu ficaria muito grato. Digamos que eu quisesse refazer um arquivo em% appdata% \ Microsoft \ file.txt, por exemplo. Como você faria isso? Eu vi eu preciso refazer isso assim: @AppDataCommonDir Mas eu não sei a sintaxe que o Autoit espera de mim. - user2723297


Se você não quiser usar o AutoIt, examine o quser comando que exibe, entre outras coisas, o tempo ocioso até o minuto mais próximo:

C:\Users\Richard>quser
 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
>richard               console             1  Active      none   26/06/2014 15:29
C:\Users\Richard>

Uma maneira simples seria testar a saída de:

quser | findstr /I %USERNAME% | findstr "none"

e se ele voltar vazio, eles estarão com mais de 1 minuto ociosos.


5