2009-09-09 11 views
6

Quiero finalizar una aplicación utilizando la ruta de archivo completa a través de vb.net, pero no pude encontrarla en Proceso. Esperaba un Process.Stop (filepath) fácil, como con Process.Start, pero no tuve tanta suerte.Terminar una aplicación mediante programación utilizando una ruta de archivo en vb.net

¿Cómo puedo hacer eso?

+0

¿Por qué tomaría en serio a un hombre cuyo perfil dice que es de Antartica y está haciendo un MMORPG que estará disponible para su compra pronto. Por cierto, no terminas las aplicaciones a través de sus rutas de archivos. En su lugar, utiliza el nombre del proceso que generalmente es el nombre del archivo ejecutable. –

+0

La cosa de la Antártida es una broma, el MMORPG no está a la venta, mi último trabajo (software, sin relación con el mmo) estará pronto a la venta. ¿Por qué debería tomar en serio a un hombre que no puede tomar una pequeña broma? Sé que no terminas las aplicaciones a través de sus rutas de archivos, pero estoy preguntando cómo hacerlo. – Cyclone

Respuesta

2

Debería tener en cuenta la propiedad Módulos de cada proceso y, a su vez, verificar los nombres de los archivos con la ruta deseada.

He aquí 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()); 

EDIT: actualizan el código para tomar mayúsculas y minúsculas en cuenta para la comparación de cadenas .

+0

Mi aplicación está en vb.net, creo que su ejemplo fue en C#. No soy muy fluido en C#, así que no puedo portar esto. – Cyclone

+0

Agregué el código de vb.net a mi publicación. –

+0

Eso debería funcionar, ¡gracias! – Cyclone

2

tratar

System.Diagnostics.Process.GetProcessesByName (nameOfExeFile) .First(). Mata()

Esto ignora la ruta del archivo.

+0

¿Alguna forma de hacerlo * con * la ruta? O bien, ¿hay alguna forma de averiguar el nombre del archivo desde la ruta del archivo? – Cyclone

Cuestiones relacionadas