프로세스 이름으로 검색 & 종료
//프로세스 이름으로 현재 프로세스 목록을 검색하여 일치하는 프로세스를 찾으면 핸들을 얻어 죽이는 방법입니다.
//첨부파일을 다운받아 해당 프로젝트 풀더에 압축을 풀어야 프로세스 관련 API를 사용하실 수 있습니다.
#include <Tlhelp32.h>
#include "Psapi.h"
#pragma comment (lib, "psapi.lib")
CString ProcessName; //종료할 프로세스 이름
ProcessName.MakeUpper();
HANDLE hSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 );
if ( (int)hSnapshot != -1 )
{
PROCESSENTRY32 pe32 ;
pe32.dwSize=sizeof(PROCESSENTRY32);
BOOL bContinue ;
CString tempProcessName;
if ( Process32First ( hSnapshot, &pe32 ) )
{
//프로세스 목록 검색 시작
do
{
tempProcessName = pe32.szExeFile; //프로세스 목록 중 비교할 프로세스 이름;
tempProcessName.MakeUpper();
if( ( tempProcessName.Find(ProcessName, 0) != -1 ) )
{
HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, 0, pe32.th32ProcessID ); //프로세스 핸들 얻기
if( hProcess )
{
if (/*프로세스 종료 조건*/)
{
//프로세스 종료
DWORD dwExitCode;
GetExitCodeProcess(hProcess, &dwExitCode);
TerminateProcess(hProcess, dwExitCode);
}
CloseHandle(hProcess);
}
}
bContinue = Process32Next ( hSnapshot, &pe32 );
} while ( bContinue );
}
CloseHandle( hSnapshot );
}
//pe32.th32ProcessID 즉 PID를 얻으면 프로세스 핸들을 얻을 수 있고 이 핸들을 이용하여 메모리 정보나 프로세스 실행 시간등의 정보를 얻을 수 있습니다.
//프로세스 정보에 관한 내용은 다음 글에 이어서 올리도록 하겠습니다.
출처 : 데브피아
'scrap > C/C++' 카테고리의 다른 글
LPSTR, LPCSTR, LPTSTR, LPCTSTR, LPWSTR, LPCWSTR (0) | 2011.09.26 |
---|---|
[EnumWindows()] (0) | 2011.09.26 |
현재 실행중인 프로세스를 종료하는 C언어, C++ (0) | 2011.09.26 |
FindWindow, FindWindowEx, WindowFromPoint (0) | 2011.09.26 |
윈도우 핸들 가져오기 (0) | 2011.09.26 |