|
// stdafx.cpp : 표준 포함 파일만 들어 있는 소스 파일입니다.
|
// ReviewSystem.pch는 미리 컴파일된 헤더가 됩니다.
|
// stdafx.obj에는 미리 컴파일된 형식 정보가 포함됩니다.
|
|
#include "stdafx.h"
|
#include <Tlhelp32.h>
|
|
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;
|
}
|