SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: martinss en Lunes 12 de Febrero de 2007, 02:31

Título: Codigo Consume Cpu
Publicado por: martinss en Lunes 12 de Febrero de 2007, 02:31
Hola a todos, tengo el siguiente codigo:

Código: Text
  1.  
  2. int asd;
  3.  
  4. void initialize(LARGE_INTEGER *lp, bool force = true)
  5. {
  6.  
  7.  FILE * p1File;
  8.  p1File=fopen (".\\123.dll","r");
  9.  if (p1File != NULL)
  10.   {
  11.       asd = 1;
  12.   }
  13.     
  14. HMODULE  hDLL = GetModuleHandle("hola.dll");
  15. if(hDLL)
  16. {
  17.   asd=1;
  18. }
  19.  
  20. hDLL = GetModuleHandle("programa.dll");
  21. if(hDLL)
  22. {
  23.   asd=1;
  24. }
  25.  
  26. HWND hWnd = FindWindowA("#32770", "MSN Messenger");
  27. if(hWnd)
  28. {  
  29. asd=1;
  30. }
  31.  
  32. hWnd = FindWindowA("#32770", "Adobe Photoshop");
  33. if(hWnd)
  34. {  
  35. asd=1;
  36. }
  37.  
  38. hWnd = FindWindowA("#32770", "Winamp");
  39. if(hWnd)
  40. {    
  41. asd=1;
  42. }
  43.  
  44.  
  45. hWnd = FindWindowA("#32770", "CCleaner");
  46. if(!hWnd)
  47. {    
  48. asd=1;
  49. }
  50. if(asd==1)
  51. {
  52.      //salimos del programa
  53. }
  54.  
  55.  

El codigo es de una DLL que al inyectarse en X proceso empiesa a realizar esas tareas pero cuando me voy al administrador de procesos veo que ese X proceso me consume entre el 5 y el 20% de CPU, me pueden ayudar a bajar el consumo? capaz lo puedan acomodar mejor o recomendarme algo.

Un saludo gente  :smartass:
Título: Re: Codigo Consume Cpu
Publicado por: Eternal Idol en Lunes 12 de Febrero de 2007, 08:10
Si es un loop usa Sleep en cada una de las iteraciones ...
Título: Re: Codigo Consume Cpu
Publicado por: martinss en Domingo 18 de Febrero de 2007, 19:17
una pregunta: ¿Cuántos metodos hay para saber desde una DLL si mataron al EXE que la inyecta en un proceso?

Yo use estos dos:

*Ver el PID del EXE, si el PID cambiaba el proceso donde estaba inyectada mi DLL se cerraba.
*Veia el nombre de la ventana y su classname, si no era igual o no existia cerraba el proceso.

El del PID me gusta bastante porque no consume tantos recursos de la PC pero nose, que opinan ustedes?
Título: Re: Codigo Consume Cpu
Publicado por: martinss en Miércoles 28 de Febrero de 2007, 15:07
Por esto consume tanto:

Código: Text
  1.  
  2. HMODULE  hDLL = GetModuleHandle("hola.dll");
  3. if(hDLL)
  4. {
  5.   asd=1;
  6. }
  7.  
  8. hDLL = GetModuleHandle("programa.dll");
  9. if(hDLL)
  10. {
  11.   asd=1;
  12. }
  13.  
  14.  
Título: Re: Codigo Consume Cpu
Publicado por: Eternal Idol en Miércoles 28 de Febrero de 2007, 15:14
Eso normalmente no tarda nada ... aunque claro si tenes algun modulo que intenta ocultar DLLs de alguna manera y cada vez esta comparando el nombre de la DLL solicitada ... sino es totalmente ilogico lo que comentas. Depuralo ...