SDC C-Project CF Review 프로그램
LYW
2021-05-26 5e3a8e2508c719bb48273d873b17b636c7cef4d7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 
// 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;
}