Programming/Win32 API2008. 12. 1. 15:42

프로세스를 죽이는 방법은 여러가지가 있지만 남의 프로그램을 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;



꼬리에 꼬리를 무는 식으로 프로그램이 짜여져 있다.

이런것들이 노가다성 작업으로 느껴지기도한다.

Posted by skensita