FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Porcentaje de uso del CPU
Aqi está el codigo en Builder, no se si ya alguien lo habia publicado aqi, en otros foros ..o no se....crei ver algo por ahi pero en linux....
Código:
#include <Winbase.h> #include <stdio.h> #pragma hdrstop #pragma argsused #define _WIN32_WINNT 0x0501 void Error(HANDLE Handle) { LPVOID lpMsgBuf; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),(LPTSTR) &lpMsgBuf,0,NULL); MessageBox( NULL, (char *)lpMsgBuf,"GetLastError", MB_OK|MB_ICONINFORMATION); LocalFree( lpMsgBuf ); FreeLibrary(Handle); exit(0); } int main(int argc, char* argv[]) { int i=10; bool (*GST)(FILETIME *,FILETIME *,FILETIME *); __int64 ITn=0,ITv=0,KTn=0,KTv=0,UTn=0,UTv=0; HANDLE Handle=LoadLibrary("kernel32.dll"); if(!Handle) return 1; GST=(bool (*)(FILETIME *,FILETIME *,FILETIME *))GetProcAddress(Handle,"GetSystemTimes"); if(!GST) return 1; while((--i)!=0) { FILETIME IT,KT,UT; try { bool res=GST(&IT,&KT,&UT); Sleep(1500); if(!res) Error(Handle); memcpy(&UTn,&UT,sizeof(FILETIME)); memcpy(&ITn,&IT,sizeof(FILETIME)); memcpy(&KTn,&KT,sizeof(FILETIME)); } catch(Exception &Ex) { printf("Puta excepcion en la segunda\n"); } __int64 Deno=((KTn-KTv)+(UTn-UTv)); if( Deno==0) printf("0\n"); else { double Prcntj=((double)Deno-(ITn-ITv))/Deno*100; printf("%f\n",Prcntj); } KTv=KTn; UTv=UTn; ITv=ITn; } FreeLibrary(Handle); return 0; } Una cosita....a veces se tira una excepción sin motivo aparente, no se xq.. si alguien puede y qiere corregirlo.....q lo haga.....esto es oarte de un agente SNMP q se esta haciendo aqi en la Univ. aún estoy pariendo con tomar la temperatura del procesador, ya se como pero por ser WMI se hace casi imposible
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad." Simón Bolívar (Carta al Coronel Inglés Patricio Cambell 05/08/1829). |
#2
|
||||
|
||||
Hola,
No me queda muy claro si lo que pretendías era compartir esas rutinas,... es decir, si no sería mejor que el código fuente (y los comentarios pertinentes) que propones estuviera en el apartado de trucos... ¿o es que hay algún problema y es eso lo que te precupa, la solución? |
#3
|
||||
|
||||
Pues de solución....no se.... la vaina en cuestión funciona...de hecho toma mejores muestras q la del administrador de tareas aunqe yo creo q este ultimo no se deja engañar tan fácil y toma muestras en otros intervalos, por eso ahi se ve mas estable q en el q puse....lo q no entiendo muy bien es xq la funcion q cargo a veces qeda algo así como "invalidada" y era necesario cargar de nuevo el kernel32, lo ignoro, si alguien qiere pues...pongalo en el de trucos..traduzcanlo a delphi tambien si qieren....no hay peo....estoy muy atareado con esa vaina del SNMP y me qeda muy poco tiempo de vida en la universidad, por eso no se les extrañe si de repente ven algun tema no correspondiente al foro donde este publicado , es por el apuro....
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad." Simón Bolívar (Carta al Coronel Inglés Patricio Cambell 05/08/1829). |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Incrementa el porcentaje y no imprime. | zugazua2001 | Impresión | 1 | 19-05-2006 08:59:19 |
Ancho de columnas en StringGrid en porcentaje | andre | OOP | 3 | 17-06-2004 14:36:54 |
Porcentaje en un ProgressBar | silviodp | OOP | 1 | 15-04-2004 06:41:41 |
mostrar porcentaje con CGauge del texto de un Edit | garth | C++ Builder | 3 | 26-03-2004 12:23:25 |
Matemáticas: Calcular porcentaje | DarkByte | Varios | 9 | 01-02-2004 17:42:08 |
|