Crear Kill Process Multiple
Publicado por Rubén (4 intervenciones) el 21/06/2010 18:23:52
Hola a todos, dispongo de un código que encontré por el web para crear un matador de procesos, pero tiene un problema, y es que solo sirve para matar un proceso cada vez, qué tendría que implementar para poder matar varios a la vez? Aclaro que en las propiedades del List Box he activado Multiselect - 2 Extended, pero aun así solo mata el último proceso y no los que marco..
Este es el código:
Option Explicit
' Variables para usar Wmi
Dim ListaProcesos As Object
Dim ObjetoWMI As Object
Dim ProcesoACerrar As Object
Private Function MatarProceso( _
StrNombreProceso As String, _
Optional DecirSINO As Boolean = True) As Boolean
MatarProceso = False
Set ObjetoWMI = GetObject("winmgmts:")
If IsNull(ObjetoWMI) = False Then
'instanciamos la variable
Set ListaProcesos = ObjetoWMI.InstancesOf("win32_process")
For Each ProcesoACerrar In ListaProcesos
If UCase(ProcesoACerrar.Name) = UCase(StrNombreProceso) Then
If DecirSINO Then
If MsgBox("¿Matar el proceso " & _
ProcesoACerrar.Name & vbNewLine & "...¿Está seguro?", _
vbYesNo + vbCritical) = vbYes Then
ProcesoACerrar.Terminate (0)
MatarProceso = True
End If
Else
'Matamos el proceso con el método Terminate
ProcesoACerrar.Terminate (0)
MatarProceso = True
End If
End If
Next
End If
'Elimina las variables
Set ListaProcesos = Nothing
Set ObjetoWMI = Nothing
End Function
Private Sub Listar()
Set ObjetoWMI = GetObject("winmgmts:")
If IsNull(ObjetoWMI) = False Then
' En esta variable se obtienen los procesos
Set ListaProcesos = ObjetoWMI.InstancesOf("win32_process")
'Recorremos toda la coleccion en la lista de procesos _
y la añadimos al control listbox
For Each ProcesoACerrar In ListaProcesos
List1.AddItem LCase$(ProcesoACerrar.Name)
Next
End If
'Eliminamos las variables de objeto
Set ListaProcesos = Nothing
Set ObjetoWMI = Nothing
End Sub
Private Sub Command1_Click()
'Llamamos a MatarProceso pasandole el nombre
MatarProceso LCase$(List1), True
'Borramos el list
List1.Clear
'Volvemos a listar los procesos
Call Listar
End Sub
Private Sub Command2_Click()
'Borramos la lista y volvemos a listar los procesos
List1.Clear
Call Listar
End Sub
Private Sub Form_Load()
Command2.Caption = " Listar Procesos"
Command1.Caption = " Cerrar Proceso "
Me.Caption = " Wmi - ejemplo para manipular procesos de windows "
End Sub
Muchas gracias.
Este es el código:
Option Explicit
' Variables para usar Wmi
Dim ListaProcesos As Object
Dim ObjetoWMI As Object
Dim ProcesoACerrar As Object
Private Function MatarProceso( _
StrNombreProceso As String, _
Optional DecirSINO As Boolean = True) As Boolean
MatarProceso = False
Set ObjetoWMI = GetObject("winmgmts:")
If IsNull(ObjetoWMI) = False Then
'instanciamos la variable
Set ListaProcesos = ObjetoWMI.InstancesOf("win32_process")
For Each ProcesoACerrar In ListaProcesos
If UCase(ProcesoACerrar.Name) = UCase(StrNombreProceso) Then
If DecirSINO Then
If MsgBox("¿Matar el proceso " & _
ProcesoACerrar.Name & vbNewLine & "...¿Está seguro?", _
vbYesNo + vbCritical) = vbYes Then
ProcesoACerrar.Terminate (0)
MatarProceso = True
End If
Else
'Matamos el proceso con el método Terminate
ProcesoACerrar.Terminate (0)
MatarProceso = True
End If
End If
Next
End If
'Elimina las variables
Set ListaProcesos = Nothing
Set ObjetoWMI = Nothing
End Function
Private Sub Listar()
Set ObjetoWMI = GetObject("winmgmts:")
If IsNull(ObjetoWMI) = False Then
' En esta variable se obtienen los procesos
Set ListaProcesos = ObjetoWMI.InstancesOf("win32_process")
'Recorremos toda la coleccion en la lista de procesos _
y la añadimos al control listbox
For Each ProcesoACerrar In ListaProcesos
List1.AddItem LCase$(ProcesoACerrar.Name)
Next
End If
'Eliminamos las variables de objeto
Set ListaProcesos = Nothing
Set ObjetoWMI = Nothing
End Sub
Private Sub Command1_Click()
'Llamamos a MatarProceso pasandole el nombre
MatarProceso LCase$(List1), True
'Borramos el list
List1.Clear
'Volvemos a listar los procesos
Call Listar
End Sub
Private Sub Command2_Click()
'Borramos la lista y volvemos a listar los procesos
List1.Clear
Call Listar
End Sub
Private Sub Form_Load()
Command2.Caption = " Listar Procesos"
Command1.Caption = " Cerrar Proceso "
Me.Caption = " Wmi - ejemplo para manipular procesos de windows "
End Sub
Muchas gracias.
Valora esta pregunta


0