프로세스를 죽이는 방법은 여러가지가 있지만 남의 프로그램을 Class Name, Windows Name으로
Process Id를 얻어내어 프로세스를 Kill 시키는 방법을 기술한다.
참고로 Process Id와 Process Name 은 Spy++ 로 쉽게 확인 할수 있다.
또한 다이얼로그 기반 프로세스는 Windows Name이 없기 때문에 Null값을 입력하면 된다.
//먼저 핸들값을 얻어낸다.
hwnd = FindWindow(TEXT("Class Name"),TEXT("Windows Name"));
if(hwnd == NULL)
{
return false;
}
//핸들값을 통해 ProecssId를 도출한다.
DWORD dwProcessId = NULL;
GetWindowThreadProcessId( hwnd, &dwProcessId);
if(dwProcessId == NULL)
{
return false;
}
HANDLE process;
DWORD dwError;
//얻어진 ProcessId로 프로세서를 연다.
process = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId );
dwError = GetLastError();
if(process == NULL)
{
if(dwError == ERROR_INVALID_PARAMETER) // already terminated.
return true;
return false;
}
//열려진 Process핸들값으로 해당 프로세서를 종료한다.
if(!TerminateProcess(process, (UINT)-1))
printf("KillProcess: TerminateProcess returned false. PID = %u", id);
CloseHandle(process);
return true;
꼬리에 꼬리를 무는 식으로 프로그램이 짜여져 있다.
이런것들이 노가다성 작업으로 느껴지기도한다.