Windows/MFC

kill process

aucd29 2013. 10. 2. 18:23
[code]
#include <tlhelp32.h>
#pragma comment(lib, "Psapi.lib")

VOID KillProcess(LPCSTR pszName)
{
    HANDLE hProcessSnap = NULL;
    BOOL bRet         = FALSE;
    PROCESSENTRY32 pe32 = {0};
    hProcessSnap        = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    
    if (hProcessSnap == (HANDLE)-1)
        return;
    
    pe32.dwSize = sizeof(PROCESSENTRY32);
    
    if (Process32First(hProcessSnap, &pe32))
    {
        BOOL bCurrent     = FALSE;
        MODULEENTRY32 me32 = {0};
        
        do
        {
            bCurrent = GetProcessModule(pe32.th32ProcessID, pszName);
            if(bCurrent)
            {
                HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
                if(hProcess)
                {
                    if(TerminateProcess(hProcess, 0))
                    {
                        unsigned long nCode;
                        GetExitCodeProcess(hProcess, &nCode);
                    }
                    CloseHandle(hProcess);
                }
            }
        }
        while (Process32Next(hProcessSnap, &pe32));
    }
    
    CloseHandle (hProcessSnap);
    return;
}
[/code]