반응형
#include <Windows.h>
#include <TlHelp32.h>
#include <stdio.h>
BOOL ProcessAllKill(const char *szProcessName)
{
//시스템 프로세스에 대한 전체 스냅샷 찍기
HANDLE hndl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
DWORD dwsma = GetLastError();
HANDLE hHandle;
DWORD dwExitCode = 0;
//스냅샷 찍은 프로세스에 대한 실행파일 이름, 프로세스 정보, PPID에 대한 정보를 저장한 구조체
PROCESSENTRY32 procEntry = { 0 };
procEntry.dwSize = sizeof(PROCESSENTRY32);
//스냅샷에 첫번째 프로세스를 검색
Process32First(hndl, &procEntry);
while (1)
{
//실행파일의 이름을 비교하여 같으면 OpenProcess 실행
if (!strcmp(procEntry.szExeFile, szProcessName))
{
//존재하는 프로세스 객체 열기(모든접근, 0, PID)
hHandle = OpenProcess(PROCESS_ALL_ACCESS, 0, procEntry.th32ProcessID);
//특정 프로세스의 종료 상태 검색(handle, 프로세스 상태값) - return nonzero
if (GetExitCodeProcess(hHandle, &dwExitCode))
{
//특정 프로세스나 그것의 스레드 전부를 종료
if (TerminateProcess(hHandle, dwExitCode))
{
return TRUE;
}
}
}
//시스템 스냅샷에 등록된 다음 프로세스에 대한 정보를 검색(스냅샷, processEntry32 구조체)
if (!Process32Next(hndl, &procEntry))
{
return FALSE;
}
}
return FALSE;
}
void main()
{
if (ProcessAllKill("chrome.exe"))
printf("성공\n");
else
printf("실패\n");
return;
반응형
'C & Docker & LINUX' 카테고리의 다른 글
| C++ ) Visual Studio 2019 실행파일 아이콘 변경 (0) | 2020.06.12 |
|---|---|
| [Docker] Got permission denied while trying to connect to the Docker daemon socket 해결 방안 (0) | 2020.03.11 |
| C++ ) 특정 프로세스 PID 검색하기 (0) | 2019.10.25 |
| C++ ) 레지스트리 등록/수정/조회 (2) | 2019.07.01 |
| C++ ) SetFilePointer 예제 (0) | 2019.06.30 |