Hola, googleando me he encontrado estepost de Delphi:
Basicamente obtenemos el tiempo de CPU que lleva la aplicacion, esperamos unos milisegundos y volvemos a obtener el tiempo de CPU. La diferencia entre uno y otro nos permite el % de CPU que ha usado la aplicacion.
Ejemplo de uso:
Si alguien supiese adaptarlo a un script que se ejecute desde una tarea programada pero en vez de mucho consumo de cpu en unos segundos controlase el poco consumo de cpu en determinado tiempo, ya lo tendríamos...
Basicamente obtenemos el tiempo de CPU que lleva la aplicacion, esperamos unos milisegundos y volvemos a obtener el tiempo de CPU. La diferencia entre uno y otro nos permite el % de CPU que ha usado la aplicacion.
Código [Seleccionar]
1.uses PsApi;
2.
3.function CPUTime(Path: String): Integer;
4.var
5. Procesos: array[1..1024] of DWORD;
6. Needed, i: DWORD;
7. Process: THandle;
8. ModName: array[0..MAX_PATH] of Char;
9. CreationTime: FILETIME;
10. ExitTime: FILETIME;
11. KernelTime: FILETIME;
12. UserTime: FILETIME;
13. OldTime: int64;
14.begin
15. Result:= 0;
16. if EnumProcesses(@Procesos,SizeOf(Procesos),Needed) then
17. begin
18. for i:= 1 to (Needed div Sizeof(DWORD)) do
19. begin
20. Process := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
21. FALSE,Procesos[i]);
22. if Process <> 0 then
23. begin
24. if GetModuleFileNameEx(Process,0,ModName,SizeOf(ModName)-1)>0 then
25. begin
26. if StrIComp(ModName,PChar(Path)) = 0 then
27. begin
28. if GetProcessTimes(Process,CreationTime,ExitTime,KernelTime,UserTime) then
29. begin
30. OldTime:= int64(KernelTime) + int64(UserTime);
31. Sleep(100);
32. if GetProcessTimes(Process,CreationTime,ExitTime,KernelTime,UserTime) then
33. begin
34. Result:= (int64(KernelTime) + int64(UserTime) - OldTime) div 10000;
35. end;
36. end;
37. // Solo usamos el primer proceso que encontramos
38. break;
39. end;
40. end;
41. CloseHandle(Process);
42. end;
43. end;
44. end;
45.end;
Ejemplo de uso:
Código [Seleccionar]
1.
2.ShowMessage(IntToStr(CPUTime('c:\windows\notepad.exe')));
3.
Si alguien supiese adaptarlo a un script que se ejecute desde una tarea programada pero en vez de mucho consumo de cpu en unos segundos controlase el poco consumo de cpu en determinado tiempo, ya lo tendríamos...