6

vb.net 経由で完全なファイル パスを使用してアプリケーションを終了したいのですが、プロセスの下に見つかりませんでした。Process.Start のように、簡単な Process.Stop(filepath) を期待していましたが、そのような運はありませんでした。

どうすればそうできますか?

4

2 に答える 2

2

各プロセスの Modules プロパティを調べる必要があり、次に、目的のパスに対してファイル名を確認する必要があります。

次に例を示します。

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());

編集:文字列比較で大文字と小文字を区別するようにコードを更新しました。

于 2009-09-09T21:50:43.290 に答える
2

試す

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

これは、ファイルのパスを無視します。

于 2009-09-09T21:23:55.377 に答える