본문 바로가기

Programming/MFC

[MFC] 실행중인 프로세스 찾아서 종료해주는 함수

void SetCheckProcess()

{

    HANDLE hSnap = NULL;
    PROCESSENTRY32 pe;
    char str[256];
    BOOL f_Find = FALSE;


    hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    pe.dwSize=sizeof(PROCESSENTRY32);

    if (Process32First(hSnap,&pe)) {
        do {
            wsprintf(str,"%s", pe.szExeFile);
            if(stricmp(str, (LPSTR)(LPCTSTR)PROCESS_NAME) == 0)
            {
                f_Find = TRUE;
                break;
   }
   else if(stricmp(str, (LPSTR)(LPCTSTR)PROCESS_NAME) != 0)
   {
    f_Find = FALSE;
    break;
   }
        } while (Process32Next(hSnap,&pe));
    }

    if(f_Find) {
        HANDLE hProcess = NULL;
        DWORD Code = 0;
        hProcess = OpenProcess (PROCESS_ALL_ACCESS,FALSE, pe.th32ProcessID);

        GetExitCodeProcess(hProcess, &Code);

        if (TerminateProcess(hProcess, Code))
        {
            WaitForSingleObject(hProcess, INFINITE);
        }
        CloseHandle(hProcess);
 }

    CloseHandle(hSnap);

}