2009-09-09 8 views
6

Desidero chiudere un'applicazione utilizzando il percorso completo del file tramite vb.net, ma non l'ho trovata in Processo. Speravo in un facile Process.Stop (filepath), come con Process.Start, ma non ho avuto tanta fortuna.Terminare un'applicazione a livello di programmazione utilizzando un percorso file in vb.net

Come posso fare?

+0

Perché dovrei prendere sul serio un ragazzo il cui profilo dice che è di Antartica e sta facendo un MMORPG che sarà disponibile per l'acquisto al più presto. A proposito, non si terminano le applicazioni attraverso i loro percorsi di file. Invece si usa il nome del processo che di solito è il nome del file eseguibile. –

+0

La cosa antartica è uno scherzo, MMORPG non è in vendita, ma il mio ultimo lavoro (software, non correlato al mmo) sarà presto in vendita. Perché dovrei prendere sul serio un ragazzo che non può fare un piccolo scherzo? So che non si chiudono le app attraverso i loro percorsi di file, ma sto chiedendo come fare. – Cyclone

risposta

2

Si dovrebbe esaminare la proprietà dei moduli di ciascun processo e, a sua volta, controllare i nomi dei file sul percorso desiderato.

Ecco un esempio:

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: aggiornato il codice per prendere la sensibilità caso in considerazione per i confronti di stringhe .

+0

La mia applicazione è in vb.net, penso che il tuo esempio fosse in C#. Non sono molto fluente in C#, quindi non posso portarlo. – Cyclone

+0

Aggiunto il codice vb.net al mio post. –

+0

Questo dovrebbe funzionare, grazie! – Cyclone

2

provare

System.Diagnostics.Process.GetProcessesByName (nameOfExeFile) .Prima(). Kill()

Questo ignora il percorso del file.

+0

Un modo per farlo * con * il percorso però? Oppure, c'è un modo per scoprire il nome del file dal percorso del file? – Cyclone