// stdafx.cpp : 표준 포함 파일만 들어 있는 소스 파일입니다. // ReviewSystem.pch는 미리 컴파일된 헤더가 됩니다. // stdafx.obj에는 미리 컴파일된 형식 정보가 포함됩니다. #include "stdafx.h" #include BOOL KillProcess(CString ProcessName) { HANDLE hProcessSnap = NULL; DWORD Return = FALSE; PROCESSENTRY32 pe32 = { 0 }; ProcessName.MakeLower(); hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) return (DWORD)INVALID_HANDLE_VALUE; pe32.dwSize = sizeof(PROCESSENTRY32); if (Process32First(hProcessSnap, &pe32)) { DWORD Code = 0; DWORD dwPriorityClass; do { HANDLE hProcess; hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); dwPriorityClass = GetPriorityClass(hProcess); CString Temp = pe32.szExeFile; Temp.MakeLower(); if (Temp == ProcessName) { if (TerminateProcess(hProcess, 0)) GetExitCodeProcess(hProcess, &Code); else return GetLastError(); } CloseHandle(hProcess); } while (Process32Next(hProcessSnap, &pe32)); Return = TRUE; } else Return = FALSE; CloseHandle(hProcessSnap); return Return; } BOOL getStateProcess(CString name) { // 실행중인 모든 프로세스 찾기 HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 processEntry32; if (hProcessSnap == INVALID_HANDLE_VALUE) { exit(EXIT_FAILURE); } processEntry32.dwSize = sizeof(PROCESSENTRY32); if (!Process32First(hProcessSnap, &processEntry32)) { CloseHandle(hProcessSnap); exit(EXIT_FAILURE); } while (Process32Next(hProcessSnap, &processEntry32)) { // 실행중인 프로세스 비교 if (name.Compare(processEntry32.szExeFile) == 0) { // 실행중인 프로세스가 있다면 return TRUE; } } // 실행중인 프로세스 중에 찾는 프로세스가 없다면 return FALSE; }