Colocar un control ListBox1 y un control Button en el form.
Al presionar el button1 se listan los procesos obtenidos con GetProcesses
Al hacer doble clic en el item seleccionado se pregunta si se quiere cerrar el proceso seleccionado, usando el método Kill del objeto Process
Código fuente en el Form
Option Strict On
Option Explicit On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load
Button1.Text = "Actualizar"
Listar()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
Call Listar()
End Sub
Sub Listar()
ListBox1.Items.Clear()
Dim p As Process
For Each p In Process.GetProcesses()
If Not p Is Nothing Then
ListBox1.Items.Add(p.ProcessName)
End If
Next
Me.Text = "cantidad de procesos : " & CStr(ListBox1.Items.Count + 1)
End Sub
Private Sub ListBox1_MouseDoubleClick(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs)Handles ListBox1.MouseDoubleClick
If ListBox1.SelectedItem Is Nothing Then Exit Sub
Dim ret As MsgBoxResult
ret = MsgBox("Quitar el proceso de la lista ?",MsgBoxStyle.Exclamation Or MsgBoxStyle.YesNo, _
"Quitar proceso")
If ret = MsgBoxResult.Yes Then
Dim p As Process
For Each p In Process.GetProcesses()
If Not p Is Nothing Then
If p.ProcessName.ToString = ListBox1.SelectedItem.ToString Then
Try
p.Kill() ' lo cierra
Listar() ' actualiza el list
Exit For ' sale
Catch msg As Exception
MsgBox(msg.Message.ToString, MsgBoxStyle.Critical)
Exit Sub
End Try
End If
End If
Next
End If
End Sub
End Class
Obtener todas las instancias abiertas de un proceso específico
Este ejemplo, obtiene usando el método GetProcessesByName todas las instancias de un proceso , en este caso del programa calc.exe ( la calculadora de windows ) y muestra el resultado en un control textbox Añadir al form un textbox1 y abrir varias instancias de la calculadora u otro programa ( indicar el nombre en el método GetProcessesByName )
Option Explicit On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim Lista_Procesos() As Process
Dim p As Process
Dim ret As String = ""
With TextBox1
.Text = ""
' obtiene una colección con los procesos a partir del nombre
Lista_Procesos = Process.GetProcessesByName("calc")
' recorre la colección
For Each p In Lista_Procesos
ret = ret & "Nombre: " & CStr(p.MainWindowTitle) & _
" PID : " & CStr(p.Id) & vbNewLine
Next
' muestra las instancias
.Text = ret
End With
End Sub
End Class
Función para buscar por el nombre de una ventana
La siguiente función recibe como parámetro el nombre de la ventana asociada a un proceso, y si el mismo se encuentra abierto, la función retorna True.
Crear un nuevo proyecto, añadir un windows Form, y el siguiente código fuente
Option Explicit On
Option Strict On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' Pasar el nombre de la ventana a buscar
MsgBox(Buscar_Aplicacion("Sin título - bloc de notas", True))
End Sub
Public Function Buscar_Aplicacion(ByVal titulo_ventana As String, _
ByVal bNombre_Exacto As Boolean) As Boolean
' nuevo objeto Process
Dim p As New Process()
Dim sName_Titulo As String = String.Empty
' recorrer la lista de procesos abiertos en la colección
For Each p In Process.GetProcesses
Try
' obtener con la propiedad MainWindowTitle del objeto Process
' el nombre de la ventana asociado a este proceso y comparar
sName_Titulo = p.MainWindowTitle.ToLower
' comparar por la cadena completa
If bNombre_Exacto Then
If sName_Titulo = titulo_ventana.ToLower Then Return True
' Por la cadena parcial
Else
If sName_Titulo.Contains(titulo_ventana.ToLower) Then Return True
End If
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
Next
End Function
End Class
gracia bro me salvaste!...xD
ResponderEliminar