Access de Xavi

Funciones => WMI => Mensaje iniciado por: xavi en Abril 20, 2012, 12:17:07 am

Título: Cerrar un proceso
Publicado por: xavi en Abril 20, 2012, 12:17:07 am
Palabras clave: WMI, cerrar, terminar, matar, proceso
Autor: Búho
Extraído de: La web del Búho

Objetivo
Cerrar un proceso sin utilizar API: utilizando WMI


Código: [Seleccionar]
' Requiere la referencia Microsoft WMI Scripting vx.x Library
Function CierraProceso _
            ( _
            StrNombreProceso _
                As String, _
            Optional _
              DecirSINO _
                As Boolean = True _
            ) _
            As Boolean

  Dim ListaProcesos  As Object
  Dim ObjetoWMI    As Object
  Dim ProcesoConcreto    As Object

  CierraProceso = False
 
  Set ObjetoWMI = GetObject("winmgmts:")
  If IsNull(ObjetoWMI) = False Then
 
    Set ListaProcesos = ObjetoWMI.InstancesOf("win32_process")
   
    For Each ProcesoConcreto In ListaProcesos
     
      If UCase(ProcesoConcreto.Name) = UCase(StrNombreProceso) Then
        If DecirSINO Then
          If MsgBox("¿Matar el proceso " & _
               ProcesoConcreto.Name & vbNewLine & _
               "...¿Está seguro?", _
               vbYesNo + vbCritical) _
               = vbYes Then
           ProcesoConcreto.Terminate (0)
           CierraProceso = True
          End If
        Else
         ProcesoConcreto.Terminate (0)
         CierraProceso = True
        End If
     End If
    Next
  Else
  'pon aqui un msgbox con el error que se produzca
  End If
 
  Set ListaProcesos = Nothing
  Set ObjetoWMI = Nothing
End Function