Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Listar los 5 Procesos Windows mas usados

Estas en el tema de Listar los 5 Procesos Windows mas usados en el foro de Visual Basic clásico en Foros del Web. Necesito saber como podria mostrar los 5 primeros procesos de Windows que se estan ejecutando al momento. En esta linea: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código vb: Ver ...
  #1 (permalink)  
Antiguo 03/11/2010, 13:29
Avatar de maxi_lance  
Fecha de Ingreso: julio-2006
Ubicación: Capital Federal
Mensajes: 220
Antigüedad: 17 años, 10 meses
Puntos: 2
Listar los 5 Procesos Windows mas usados

Necesito saber como podria mostrar los 5 primeros procesos de Windows que se estan ejecutando al momento.

En esta linea:
Código vb:
Ver original
  1. {impersonationLevel=impersonate}//localhost").ExecQuery("Select name,PercentProcessorTime,IDProcess from Win32_PerfFormattedData_PerfProc_Process where PercentProcessorTime > 0")
la consulta es en WQL asi que no puedo agregarle LIMIT ni ORDER BY.

Se me ocurre un for o un array y mostrarlo 5 veces, pero le estoy errando con la sintaxis ya que me tira error. Y al no tener experiencia en este lenguaje se me hace dificil.

Les dejo el codigo. A ver si pueden darme una mano en agregarle un for o array y ordenarlo por el de mayor porcentaje.

Código vb:
Ver original
  1. 'Declaración de variables y constantes
  2. dim objfile
  3. dim objdestination
  4. dim strline
  5.  
  6. CONST WTER ="processCPUperc.txt"       'NOMBRE FICHERO PARA ESCRIBIR
  7. 'Inicializacion objeto FSO y fichero de log
  8. set objfile = createobject("scripting.filesystemobject")
  9. set salida = wscript.stdout
  10.  
  11. 'Recuperar procesos que estén en uso en la CPU
  12. for each Process in GetObject("winmgmts:{impersonationLevel=impersonate}//localhost").ExecQuery("Select name,PercentProcessorTime,IDProcess from Win32_PerfFormattedData_PerfProc_Process where PercentProcessorTime > 0")
  13.  
  14. 'Descarte del total y del no utilizado
  15. if (process.name = "_Total" or process.name = "Idle") then
  16. 'Aqui se puede introducir código para cuando se cumpla la condicion
  17. else
  18. 'Volcado al output
  19. salida.writeline day(now)& "-" & month (now)& "-" & year(now)& ":" & Hour(now) & ":"& Minute(now) & " - " & process.name & " - %: " & process.percentprocessortime & " - ID:" & process.idprocess
  20.  
  21. end if
  22. next

Muchas Gracias !!
  #2 (permalink)  
Antiguo 05/11/2010, 03:19
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Listar los 5 Procesos Windows mas usados

Lo he puesto en un botón y he añadido un textbox para mostrar el resultado.
Parece que funciona.

Código vb:
Ver original
  1. Private Sub Command1_Click()
  2. 'Declaración de variables y constantes
  3. Dim objfile
  4. Dim objdestination
  5. Dim strline
  6. Dim process
  7. Const WTER = "processCPUperc.txt"      'NOMBRE FICHERO PARA ESCRIBIR
  8. 'Inicializacion objeto FSO y fichero de log
  9. Set objfile = CreateObject("scripting.filesystemobject")
  10. 'Set salida = wscript.stdout
  11.  
  12. 'Recuperar procesos que estén en uso en la CPU
  13. For Each process In GetObject("winmgmts:{impersonationLevel=impersonate}//localhost").ExecQuery("Select name,PercentProcessorTime,IDProcess from Win32_PerfFormattedData_PerfProc_Process where PercentProcessorTime > 0")
  14.  
  15. 'Descarte del total y del no utilizado
  16. If (process.Name = "_Total" Or process.Name = "Idle") Then
  17. 'Aqui se puede introducir código para cuando se cumpla la condicion
  18. Else
  19. 'Volcado al output
  20. Text1.Text = Day(Now) & "-" & Month(Now) & "-" & Year(Now) & ":" & Hour(Now) & ":" & Minute(Now) & " - " & process.Name & " - %: " & process.percentprocessortime & " - ID:" & process.idprocess
  21.  
  22. End If
  23. Next
  24. End Sub

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #3 (permalink)  
Antiguo 05/11/2010, 07:38
Avatar de maxi_lance  
Fecha de Ingreso: julio-2006
Ubicación: Capital Federal
Mensajes: 220
Antigüedad: 17 años, 10 meses
Puntos: 2
Respuesta: Listar los 5 Procesos Windows mas usados

grax pkj por tu tiempo !

Por ahi no me he expresado bien, pero lo que necesito es que el listado de los servicios los ordene de menor a mayor y limite el total a solo 5 servicios.
Es por eso que pensé en un array para ordenarlos y mostrarlo.
Para limitar a 5 pensé en un for pero me tira error de sintaxis:
Código vb:
Ver original
  1. 'Declaración de variables y constantes
  2. dim objfile
  3. dim objdestination
  4. dim strline
  5.  
  6. CONST WTER ="processCPUperc.txt"       'NOMBRE FICHERO PARA ESCRIBIR
  7. 'Inicializacion objeto FSO y fichero de log
  8. set objfile = createobject("scripting.filesystemobject")
  9. set salida = wscript.stdout
  10.  
  11. i = 1
  12.  
  13. 'Recuperar procesos que estén en uso en la CPU
  14. for i = 0 to 3
  15.  
  16. set Process = GetObject("winmgmts:{impersonationLevel=impersonate}//localhost").ExecQuery("Select name,PercentProcessorTime,IDProcess from Win32_PerfFormattedData_PerfProc_Process where PercentProcessorTime > 0")
  17.  
  18. salida.writeline day(now)& "-" & month (now)& "-" & year(now)& ":" & Hour(now) & ":"& Minute(now) & " - " & process.name & " - %: " & process.      percentprocessortime & " - ID:" & process.idprocess
  19. salida.writeline i
  20.  
  21. i = i + 1  
  22.  
  23. next

Muchas Gracias !
  #4 (permalink)  
Antiguo 05/11/2010, 08:08
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Listar los 5 Procesos Windows mas usados

Lo siento pero lo que usas del GetObject y tal no lo conozco y no sé como hacer que devuelva lo que tú quieres, pero te puedo decir un par de cosas:
El bucle que intentas hacer solo va a mostrar 5 veces el mismo resultado, ya que muestra solo los procesos que están haciendo algo que ocupe más del 1% del tiempo de proceso.

De todas formas te comento que el for lo usas mal, ya que al entrar en el for la variable i adquiere el valor 0, de modo que asignarselo antes es absurdo.
Además, dentro del bucle no necesitas aumentar el valor de i, ya que aumenta solo al llegar al next para comenzar un nuevo ciclo, y al aumentarlo tu, te saltas un ciclo a cada vuelta.

Tampoco declaras variables, como Process. Activa el Option Explicit en tu VB para evitar conflictos con las variables.

Suerte.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Etiquetas: listar, mas, procesos, windows
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:03.