C # .NET 또는 C ++에서 .exe 파일 이름을 검색하여 일부 활성 프로세스를 어떻게 종료 할 수 있습니까?
답변
빠른 답변 :
foreach (var process in Process.GetProcessesByName("whatever"))
{
process.Kill();
}
(프로세스 이름에서 .exe는 제외)
답변
내 솔루션은 모든 프로세스를 나열 하기 위해 Process.GetProcess () 를 사용 하는 것입니다.
원하는 프로세스를 포함하도록 필터링하면 Process.Kill () 메서드를 실행 하여 중지 할 수 있습니다.
var chromeDriverProcesses = Process.GetProcesses().
Where(pr => pr.ProcessName == "chromedriver"); // without '.exe'
foreach (var process in chromeDriverProcesses)
{
process.Kill();
}
최신 정보:
( Async Enumerables ) async
의 유용한 최근 방법으로 접근 방식 을 사용하려면 다음을 확인하십시오.C# 8
const string processName = "chromedriver"; // without '.exe'
await Process.GetProcesses()
.Where(pr => pr.ProcessName == processName)
.ToAsyncEnumerable()
.ForEachAsync(p => p.Kill());
참고 :
async
메서드를 사용 한다고해서 항상 코드가 더 빨리 실행되는 것은 아니지만 적어도 CPU 시간을 낭비하지 않고 작업을 수행하는 동안 포 그라운드 스레드가 중단되는 것을 방지합니다. 어쨌든 원하는 버전을 생각해야합니다.
답변
를 사용 Process.GetProcesses()
하여 현재 실행중인 프로세스를 가져온 다음 프로세스를 종료 할 수 있습니다 Process.Kill()
.
답변
프로세스 ID ( PID
) 가있는 경우 다음과 같이이 프로세스를 종료 할 수 있습니다.
Process processToKill = Process.GetProcessById(pid);
processToKill.Kill();
답변
MS Word의 특정 인스턴스를 죽일 수 있습니다.
foreach (var process in Process.GetProcessesByName("WINWORD"))
{
// Temp is a document which you need to kill.
if (process.MainWindowTitle.Contains("Temp"))
process.Kill();
}
답변
public void EndTask(string taskname)
{
string processName = taskname.Replace(".exe", "");
foreach (Process process in Process.GetProcessesByName(processName))
{
process.Kill();
}
}
//EndTask("notepad");
요약 : 이름에 .exe가 포함되어 있어도 프로세스가 종료됩니다. “프로세스 이름에서 .exe를 제거”할 필요가 없습니다. 100 % 작동합니다.