300x250
#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 |