El flexible y potente lenguaje de programación Visual Basic. NET, siendo una de las herramientas especialmente creadas para el desarrollo de aplicaciones para la plataforma Microsoft. NET, le permite utilizar plenamente todas sus capacidades. En particular, los componentes del espacio de nombres System. Diagnostics le permiten interactuar con procesos, registros de eventos y contadores de rendimiento. Por ejemplo, puede cerrar un programa de Visual Basic usando la clase Process.
Necesario
Microsoft Visual Studio
Instrucciones
Paso 1
Importe los espacios de nombres System, System. Diagnostics y System. Threading. Agregue las siguientes líneas de código al comienzo del módulo:
Sistema de Importaciones
Sistema de Importaciones.
Sistema de Importaciones.
Esto es solo por la conveniencia de usar los componentes asociados con estos espacios de nombres.
Paso 2
Obtén los datos del proceso a cerrar. Utilice el objeto de clase System. Diagnostics. Process. Declare una variable de esta clase:
Dim oProc como proceso
Luego use algún método para encontrar el proceso requerido.
Paso 3
Si el programa, que deberá cerrarse en el futuro, lo inicia la aplicación que se está desarrollando, simplemente guarde el objeto devuelto por el método Start al inicio:
oProc = Process. Start ("app.exe")
Paso 4
Si necesita cerrar un proceso con un identificador conocido, use el método estático GetProcessById de la clase Process para obtener el objeto correspondiente:
oProc = Process. GetProcessById (nID)
Donde nID es el identificador numérico del proceso.
Paso 5
Si solo se conocen algunas de las características del proceso objetivo, búsquelo. Obtenga la lista de procesos que se ejecutan en la máquina local como una matriz de objetos de la clase Process. Utilice los métodos GetProcesses (devuelve todos los procesos) o GetProcessesByName (solo procesos con el nombre dado):
Dim aoAllProcesses As Process () = Process. GetProcesses ()
Dim aoProcsByName As Process () = Process. GetProcessesByName ("app.exe")
Enumere los objetos de la matriz usando un bucle:
Dim oProc como proceso
Para cada oProc en aoAllProcesses
'acciones en oProc
Próximo
Recorra las propiedades MainModule, MainWindowTitle, ProcessName, etc. para encontrar el objeto deseado.
Paso 6
Intente terminar el programa enviando un mensaje de cierre a su ventana principal. Llame al método CloseMainWindow del objeto correspondiente al proceso de destino. Si es necesario, espere a que se complete la aplicación llamando a WaitForSalir, por ejemplo:
oProc. CloseMainWindow ()
oProc. WaitForSalir ()
Este método no garantiza la finalización del programa, ya que el mensaje de cierre de ventana a menudo se procesa y puede ignorarse.
Paso 7
Espere un poco de tiempo después de llamar a CloseMainWindow para asegurarse de que el programa finalice. Utilice el método Sleep de la clase Thread. Luego verifique el estado del proceso examinando la propiedad HasExited y, si no ha terminado, llame al método Kill:
Thread. Sleep (6000)
oProc. Refresh ()
Si no ha salido oProc. Entonces
oProc. Kill ()
Terminara si
Si lo desea, puede sondear el estado del proceso en un bucle, emitiendo avisos periódicos al usuario para que finalice la aplicación sin guardar datos. Y solo si acepta llamar a Kill.
Paso 8
Libere recursos del sistema después de que el programa termine con el método Cerrar:
oProc. Close ()
Paso 9
Para evitar errores inesperados durante la ejecución de la aplicación, coloque todo el algoritmo de cierre del programa en un bloque Try-Catch-End Try. Implemente el manejo de excepciones completo con mensajes de diagnóstico, si es necesario.