elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Como mantener procedimiento en ejecucion?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como mantener procedimiento en ejecucion?  (Leído 1,607 veces)
byway

Desconectado Desconectado

Mensajes: 181


^^,


Ver Perfil
Como mantener procedimiento en ejecucion?
« en: 10 Abril 2009, 20:38 pm »

bueno como dice la pregunta como mantener un procedimiento en ejecucion.. aunque suena simple... pero la idea es tener un procedimiento se ejecute o este pendiente siempre .. pero que no consuma recursos de microprocesador ni memoria .. lo que tengo es :

todo el procedimento en un timer y lo ejecuto cada segundo, pero este me consumia de 3 a 5 % de procesador en la pc testeada.. lo optimize un poco y ahora consume de 2 a 3 % del procesador, pero cada segundo esta asi...

que es lo que hace el procedimento? 

pues lee una lista de un archivo donde tengo una lista de nombres de aplicaciones indeseables que no quiero se ejecuten en la pc y con un findwindow lo encuentro en memoria y lo finalizo, y asi puedo seguir agregando nombres en la lista de programas con sus nuevas versiones...

y todo ese procedimiento se repite cada segundo... y aqui el detalle aveces se consume mucha cpu y eso no esta bien..

como puedo cambiar o evitar el uso de un timer o temporizador ... o si es posible de hacer algun tipo de procedimento (como un hook) no se casi nada de eso, pero bueno almenos optimizar el bucle.

aki esta mi codigo optimizado, cargo la lista a un listbox y de con esa lista hago la buskeda en memoria..

Código
  1. Private Sub listar()
  2. On Error GoTo error
  3. Dim linea As String
  4. Dim linea2 As String
  5. Open "data.db" For Input As #2
  6. Do Until (EOF(2))
  7.    Line Input #2, linea
  8.    linea2 = Encrypt(linea)
  9.    List1.AddItem linea2
  10. Loop
  11. Close (2)
  12. Exit Sub
  13. error:
  14. Close (2)
  15.  
  16. End Sub

y el procedimento de buskeda con un timer a 1000 ms:

Código
  1. Private Sub Timer1_timer()
  2. On Error Resume Next
  3. Dim i As Integer
  4. Dim proceso As String
  5. total = List1.ListCount - 1
  6. For i = 0 To total
  7. proceso = List1.List(i)
  8. CerrarProceso (proceso)
  9. Next i
  10. End Sub

y se que la pregunta no esta bien formulada, no se me ocurrio ponerle otro titulo.
y si me diras busca en google.. pues ya busque y no encontre nada con lo que busco.

EDIT: sobre lo que optimize es que la lista ya lo tengo dentro del programa en un listbox y asi me evito estar cargandolo cada vez y asi reduci el uso del cpu.

Me olvide mencionar si se puede hacer como los antivirus .. estan pendientes de lo que se ejecuta, y cuando sucede eso recien inicia la buskeda .. algo asi como revisando si hay cambios en la memoria.

Saludos.








« Última modificación: 10 Abril 2009, 21:01 pm por byway » En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Como mantener procedimiento en ejecucion?
« Respuesta #1 en: 10 Abril 2009, 23:43 pm »

Hola, si en efectivo un hook seria mejor, se que Cobein había hecho un modulo para ir vijilando los sucesos de ejecución pero no se si tengo dicho modulo.
por otro lado la forma en la que testeas la lista con un listbox es un mas lento, osea te conviene usar un array o una colección,  y no llamar  a cerrar todos estos procesos, ya que por lo que veo no verificas si esta en ejecución, lo que seria conveniente es que listes los procesos en ejecución y después compares cada uno, si coincides cierras el proceso.

Saludos


En línea

byway

Desconectado Desconectado

Mensajes: 181


^^,


Ver Perfil
Re: Como mantener procedimiento en ejecucion?
« Respuesta #2 en: 11 Abril 2009, 00:21 am »

Hola, si en efectivo un hook seria mejor, se que Cobein había hecho un modulo para ir vijilando los sucesos de ejecución pero no se si tengo dicho modulo.
por otro lado la forma en la que testeas la lista con un listbox es un mas lento, osea te conviene usar un array o una colección,  y no llamar  a cerrar todos estos procesos, ya que por lo que veo no verificas si esta en ejecución, lo que seria conveniente es que listes los procesos en ejecución y después compares cada uno, si coincides cierras el proceso.

Si ya lo habia visto eso de usar un array, es mas en las primeras veces lo usaba pero me limitaba a solo las lineas que declaraba .. bueno de la forma simple que lo hacia... y opte por cargar todo en un control y recorrer este .. pero consume mucha cpu y como dices no verifica si esta abierto el proceso .. directamente lo cierra.. eso de listar los procesos no se me ocurrio, pero lo ideal seria vigilar la lista de procesos y si este cambia recien inicie todo el procedimento.

empezare a buscar info sobre el tema de procesos en ejecucion, saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cómo mantener tu equipo protegido frente a Cryptolocker
Noticias
wolfbcn 0 1,490 Último mensaje 20 Noviembre 2013, 18:16 pm
por wolfbcn
¿Cómo mantener una sesión en PHP?
PHP
Kaxperday 2 4,807 Último mensaje 25 Marzo 2016, 04:02 am
por gAb1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines