2009-09-09 17 views
6

Chcę zakończyć aplikację przy użyciu pełnej ścieżki do pliku przez vb.net, ale nie mogłem go znaleźć w sekcji Proces. Miałem nadzieję na łatwą Process.Stop (ścieżkę do pliku), podobnie jak w Process.Start, ale bez takiego szczęścia.Kończenie aplikacji programowo za pomocą ścieżki pliku w vb.net

Jak mogę to zrobić?

+0

Dlaczego miałbym poważnie potraktować faceta, którego profil mówi, że pochodzi z Antartica i robi MMORPG, który wkrótce będzie dostępny w sprzedaży. BTW, nie kończą aplikacji przez ich ścieżki plików. Zamiast tego należy użyć nazwy procesu, który zwykle jest nazwą pliku wykonywalnego. –

+0

Rzecz antarktyczna to żart, MMORPG nie jest na sprzedaż, moja ostatnia praca (oprogramowanie, niezwiązane z mmo) wkrótce będzie na sprzedaż. Dlaczego powinienem poważnie potraktować faceta, który nie może żartować? Wiem, że nie kończysz aplikacji przez ścieżki do plików, ale pytam, jak to zrobić. – Cyclone

Odpowiedz

2

Będziesz musiał zajrzeć do każdej właściwości procesu "Moduły", a następnie sprawdzić nazwy plików na pożądaną ścieżkę.

Oto przykład:

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: uaktualniony kod do podjęcia wielkość liter pod uwagę przy porównaniach ciągów .

+0

Moja aplikacja jest w vb.net, myślę, że twój przykład był w C#. Nie jestem biegły w C#, więc nie mogę tego przenieść. – Cyclone

+0

Dodałem kod vb.net do mojego posta. –

+0

To powinno zadziałać, dzięki! – Cyclone

2

spróbować

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

ta ignoruje ścieżkę do pliku.

+0

Jakikolwiek sposób to zrobić * z * ścieżką? Lub jest jakiś sposób, aby dowiedzieć się nazwę pliku ze ścieżki pliku? – Cyclone

Powiązane problemy