Terminando una aplicación programáticamente usando una ruta de archivo en vb.net
Pregunta
Quiero terminar una aplicación utilizando la ruta completa del archivo a través de vb.net, pero no la encontré en Proceso. Esperaba un Process.Stop (filepath) fácil, como con Process.Start, pero no tanta suerte.
¿Cómo puedo hacerlo?
Solución
Tendría que mirar en la propiedad de cada módulo de proceso y, a su vez, verificar los nombres de archivo con la ruta deseada.
Aquí hay un ejemplo:
VB.NET
Dim path As String = "C:\Program Files\Ultrapico\Expresso\Expresso.exe"
Dim matchingProcesses = New List(Of Process)
For Each process As Process In process.GetProcesses()
For Each m As ProcessModule In process.Modules
If String.Compare(m.FileName, path, StringComparison.InvariantCultureIgnoreCase) = 0 Then
matchingProcesses.Add(process)
Exit For
End If
Next
Next
For Each p As Process In matchingProcesses
p.Kill()
Next
C#
string path = @"C:\Program Files\Ultrapico\Expresso\Expresso.exe";
var matchingProcesses = new List<Process>();
foreach (Process process in Process.GetProcesses())
{
foreach (ProcessModule m in process.Modules)
{
if (String.Compare(m.FileName, path, StringComparison.InvariantCultureIgnoreCase) == 0)
{
matchingProcesses.Add(process);
break;
}
}
}
matchingProcesses.ForEach(p => p.Kill());
EDITAR: actualizó el código para tener en cuenta la sensibilidad a las mayúsculas y minúsculas en las comparaciones de cadenas.
Otros consejos
prueba
System.Diagnostics.Process.GetProcessesByName (nameOfExeFile) .First (). Kill ()
Esto ignora la ruta del archivo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow