|
프로세스를 종료하는 프로그램을 구현중인데요
검색하고 이것저것 찾아보니 만들어놓은 함수가 있더군요
bool __fastcall TForm1::ProcessKill()
{
DWORD dwSize = 250;
HANDLE hSnapShot;
PROCESSENTRY32 pEntry;
BOOL bCrrent=FALSE;
hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPALL,NULL);
pEntry.dwSize =sizeof(pEntry);
Process32First (hSnapShot,&pEntry);
while(TRUE)
{
BOOL hRes = Process32Next (hSnapShot,&pEntry);
if(hRes == FALSE) return false;
if(!strncmp(pEntry.szExeFile, "aaa.exe",15))
{
bCrrent = TRUE;
}
if(bCrrent)
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pEntry.th32ProcessID);
if(hProcess)
{
if(TerminateProcess(hProcess, 0))
{
unsigned long nCode;
GetExitCodeProcess(hProcess, &nCode);
}
CloseHandle(hProcess);
}
break;
}
}
return true;
}
실행해보니 아주아주 잘 돌아가긴하는데
프로그램을 돌려보니 한개의 프로세스만 죽이고 종료가 되더군요
기능을 하나 추가해서 같은 이름의 프로세스를 모두 종료할수 있게 만들고 싶습니다.
예를들어 aaa.exe라는 프로그램이 3개가 실행중일때
3개 모두를 종료하려고 하는데
생각처럼 잘 안되네요 ㅜㅜ
프로세서를 검색해서 존재하면 while문으로 계속 돌리고
없으면 리턴으로 빠져나오게 하고 싶은데 혹시 수정할 부분이나 관련 팁이 있다면 부탁드리겠습니다(__)
점심 맛있게 드시고 환절기 감기 조심하세요~
|