C# .NET または C++ で .exe ファイル名を検索してアクティブなプロセスを強制終了するにはどうすればよいですか?
質問する
209831 次
8 に答える
280
素早い回答:
foreach (var process in Process.GetProcessesByName("whatever"))
{
process.Kill();
}
(プロセス名から.exeを省略します)
于 2010-07-27T15:48:34.463 に答える
51
私の解決策は、Process.GetProcess()
すべてのプロセスをリストするために使用することです。
それらをフィルタリングして必要なプロセスを含めることにより、Process.Kill()
メソッドを実行してそれらを停止できます。
var chromeDriverProcesses = Process.GetProcesses().
Where(pr => pr.ProcessName == "chromedriver"); // without '.exe'
foreach (var process in chromeDriverProcesses)
{
process.Kill();
}
アップデート:
( を使用して)非同期で同じことをしたい場合は、C# 8
Async Enumerables
これをチェックしてください:
const string processName = "chromedriver"; // without '.exe'
await Process.GetProcesses()
.Where(pr => pr.ProcessName == processName)
.ToAsyncEnumerable()
.ForEachAsync(p => p.Kill());
注:async
メソッドを使用しても、常にコードが高速に実行されるとは限りません。
主な利点は、操作中にフォアグラウンド スレッドが解放されることです。
于 2013-12-27T12:47:32.540 に答える
18
を使用Process.GetProcesses()
して、現在実行中のプロセスを取得してProcess.Kill()
から、プロセスを強制終了できます。
于 2010-07-27T15:45:58.867 に答える
-1
public void EndTask(string taskname)
{
string processName = taskname.Replace(".exe", "");
foreach (Process process in Process.GetProcessesByName(processName))
{
process.Kill();
}
}
//EndTask("notepad");
概要: 名前に .exe が含まれていても、プロセスは終了します。「プロセス名から .exe を除外する」必要はありません。100% 動作します。
于 2017-06-09T20:59:44.610 に答える