CodeSarang.Com
Home | 전체 메뉴 | 질문/답변 Join | Login | 검색   

 

특정 EXE 프로세스를 죽이기

등록자 : cpueblo (유광희), 2008-10-16

Intro

안녕하세요. cpueblo 입니다 ^^
CreateToolhelp32Snapshot 함수를 통하여 프로세스 목록의 Handle 을 얻은 후에
Process32First 를 이용하여 PE 정보를 얻습니다. PE 정보에는 프로세스에 관련된 정보가 포함되어 있습니다.

typedef struct tagPROCESSENTRY32 { DWORD dwSize; DWORD cntUsage; DWORD th32ProcessID; // this process ULONG_PTR th32DefaultHeapID; DWORD th32ModuleID; // associated exe DWORD cntThreads; DWORD th32ParentProcessID; // this process's parent process LONG pcPriClassBase; // Base priority of process's threads DWORD dwFlags; CHAR szExeFile[MAX_PATH]; // Path } PROCESSENTRY32;

소스

반드시 Tlhelp32.h 를 Include 하셔야 합니다

#include "Tlhelp32.h" namespace cpueblo { void KillProcess(const char *EXEName) { HANDLE snapshot_handle = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (INVALID_HANDLE_VALUE != snapshot_handle) { PROCESSENTRY32 pe; if (Process32First(snapshot_handle, &pe)) { do { TRACE("KillProcess() PID = %04u, FileName = %s\n", pe.th32ProcessID, pe.szExeFile); if (!_tcscmp(pe.szExeFile, (LPCTSTR)EXEName)) { HANDLE process_handle = OpenProcess(PROCESS_TERMINATE, FALSE, pe.th32ProcessID); if (INVALID_HANDLE_VALUE != process_handle) { TRACE("프로세스 중지!\n"); TerminateProcess(process_handle, 0); CloseHandle(process_handle); } } } while (Process32Next(snapshot_handle, &pe)); } CloseHandle(snapshot_handle); snapshot_handle = INVALID_HANDLE_VALUE; } } }

Usage

cpueblo::KillProcess("Merong.exe");

Result

KillProcess() PID = 0000, FileName = [System Process] KillProcess() PID = 0004, FileName = System ... KillProcess() PID = 2648, FileName = rapimgr.exe KillProcess() PID = 3220, FileName = NateOnMain.exe 프로세스 중지! KillProcess() PID = 3276, FileName = svchost.exe KillProcess() PID = 1904, FileName = TestApp.exe ...

Keywords

프로세스 강제 서스펜드
프로세스 Kill
process kill



댓글 달기 (로그인이 필요합니다)
제목
내용

http://codesarang.com. mail to cpueblocpueblo.com