vb.net 経由で完全なファイル パスを使用してアプリケーションを終了したいのですが、プロセスの下に見つかりませんでした。Process.Start のように、簡単な Process.Stop(filepath) を期待していましたが、そのような運はありませんでした。
どうすればそうできますか?
各プロセスの 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());
編集:文字列比較で大文字と小文字を区別するようにコードを更新しました。
試す
System.Diagnostics.Process.GetProcessesByName(nameOfExeFile).First().Kill()
これは、ファイルのパスを無視します。