• Viernes 1 de Noviembre de 2024, 06:35

Autor Tema:  Codigo Consume Cpu  (Leído 1333 veces)

martinss

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Codigo Consume Cpu
« en: Lunes 12 de Febrero de 2007, 02:31 »
0
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:

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Codigo Consume Cpu
« Respuesta #1 en: Lunes 12 de Febrero de 2007, 08:10 »
0
Si es un loop usa Sleep en cada una de las iteraciones ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

martinss

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Codigo Consume Cpu
« Respuesta #2 en: Domingo 18 de Febrero de 2007, 19:17 »
0
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?

martinss

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Codigo Consume Cpu
« Respuesta #3 en: Miércoles 28 de Febrero de 2007, 15:07 »
0
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.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Codigo Consume Cpu
« Respuesta #4 en: Miércoles 28 de Febrero de 2007, 15:14 »
0
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 ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.