6 Stimmen

Beenden einer Anwendung programmgesteuert mithilfe eines Dateipfads in vb.net

Ich möchte eine Anwendung über den vollständigen Dateipfad mit vb.net beenden, aber ich konnte es unter Process nicht finden. Ich hatte gehofft, dass es eine einfache Process.Stop(dateipfad) gibt, so wie bei Process.Start, aber leider kein Glück.

Wie kann ich das tun?

2voto

Versuch

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

Dies ignoriert den Dateipfad.

2voto

Ahmad Mageed Punkte 91261

Sie müssten in das Modules-Eigenschaft jedes Prozesses schauen und dann die Dateinamen mit Ihrem gewünschten Pfad vergleichen.

Hier ist ein Beispiel:

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();
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: Das Code wurde aktualisiert, um die Groß-/Kleinschreibung bei Zeichenfolgevergleichen zu berücksichtigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X