공장 이야기

Process Kill

바다가소주라면- 2010. 4. 22. 17:53

윈도우 모바일에서만 테스트 되었음...

바로 코드 나갑니다.

 

BOOL _KillProcess(HWND wndKill)
{
        DWORD  dwProcessId = 0;
        HANDLE hProcess;


        if(NULL == wndKill)
                return FALSE;


         // 핸들값을 통해 ProecssId를 도출한다.
        ::GetWindowThreadProcessId(wndKill, &dwProcessId);
        if(dwProcessId == NULL)
        {
                return FALSE;
        }


        // 얻어진 ProcessId로 프로세서를 연다.
        hProcess = ::OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId );
        if(hProcess == NULL)
        {
                if(dwError == ERROR_INVALID_PARAMETER) // already terminated.
                        return TRUE;

                return FALSE;
        }


        //열려진 Process핸들값으로 해당 프로세서를 종료한다.
        if(TRUE != ::TerminateProcess(hProcess, (UINT)-1))
                return FALSE;

        ::CloseHandle(hProcess);

        return TRUE;
}