Hola de nuevo,
El % De CPU no es lo mismo que el CPUTIME, Lo digo por el code de Delphi, Aunque puedes obtener el %CPU con esta operación:
TotalProcessRuntime / CpuTime / 100EDITO: Y otra cosa, No te recomiendo nada que las comprobaciones se hagan cada X
milisegundos... Por dios, ¿Quieres reventar el PC? xD, Deja segundos de margen.
No es exactamente lo que pides, Pero aquí tienes:
:: By Elektro H@cker
::
:: Este code comprueba cuantos ciclos (Tiempo de CPU) se han utilizado desde el inicio del proceso. Si el ciclo de tiempo es superior al máximo permitido, Mata el proceso.
:: PD: Hay un POSIBLE margen de error de tiempo de 10 segundos debido a que es el lapsus de tiempo (Delay) que tarda en actualizarse TASKLIST internamente.
::
::
::
:: CONFIGURACIÓN
::
:: Program=El nombre del proceso a comprobar.
:: MAX_CPU_Activity_Time=HORAS:MINUTOS:SEGUNDOS
Set "Max_CPU_Activity_Time=00:10:00"
:: Delay=El tiempo de espera entre comprobación, En segundos.
::
::::::::::::::::::::::::::::::::::::::::::::::::
:Check
Tasklist /FI "CPUTIME gt
%Max_CPU_Activity_Time%"
| Find /I "
%PROGRAM%" 1
>NUL
Taskkill /F /T /IM "
%PROGRAM%" 1
>NUL || Echo Error al intentar cerrar el proceso:
%PROGRAM%...
Ping -n
%DELAY% Localhost 1
>NUL)
También te puedo hacer la comprobación basada en el consumo de RAM:
:: By Elektro H@cker
::
:: Este code comprueba la memoria que está usando un proceso. Si la memoria usada es inferior a la mínima memoria permitida, Mata el proceso.
:: PD: Hay un POSIBLE margen de error de tiempo de 10 segundos debido a que es el lapsus de tiempo (Delay) que tarda en actualizarse TASKLIST internamente.
::
::
::
:: CONFIGURACIÓN
::
:: Program=El nombre del proceso a comprobar.
:: Minimum_Memory_Usage=El mínimo uso de memoria permitido, En kilobytes.
Set "Minimum_Memory_Usage=10000"
:: Delay=El tiempo de espera entre comprobación, En segundos.
::
::::::::::::::::::::::::::::::::::::::::::::::::
:Check
Tasklist /FI "MEMUSAGE lt %Minimum_Memory_Usage%" | Find /I "%PROGRAM%"
Taskkill /F /T /IM "
%PROGRAM%" 1
>NUL || Echo Error al intentar cerrar el proceso:
%PROGRAM%...
Ping -n
%DELAY% Localhost 1
>NUL)
También puedes comprobar todo esto y muchas más cosas que tasklist no permite, Usando "
WMIC Process".
Salu2.