Frage

Ich möchte eine Anwendung beenden den vollständigen Dateipfad über vb.net verwenden, aber ich konnte es nicht unter Prozess finden. Ich habe gehofft, für ein einfaches Process.Stop (filepath), wie mit Process.Start, aber kein Glück.

Wie kann ich das tun?

War es hilfreich?

Lösung

Sie würden in jedem Prozess Module Eigenschaft suchen müssen, und wiederum, überprüfen Sie die Dateinamen gegen den gewünschten Pfad.

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<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:. den Code aktualisiert für String-Vergleiche Groß- und Kleinschreibung zu berücksichtigen

Andere Tipps

Versuch

System.Diagnostics.Process.GetProcessesByName (nameOfExeFile) .First (). Tötet ()

Dies ignoriert den Pfad der Datei.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top