천객만래 [千客萬來] (It has an interminable succession of visitors)

'TerminateProcess'에 해당되는 글 2건

  1. 2012.09.20 [개발/MFC] 프로세스 강제 종료 두번째
  2. 2011.04.15 [개발/MFC] 프로세스 강제 종료 두번째

내가 특정 프로그램명을 알고 있을 때 
그 특정 프로그램의 윈도우 핸들을 구할 수 있다.
그러면, 핸들에서 프로세스 ID를 구할 수 있게 된다.

그 다음 순서는 분명하다.
프로세스를 강제로 종료시키는 것이다.
그럼 아래 소스를 살펴보자.


HWND hOsk=::FindWindow(NULL, "SBRICH");
 if(hOsk) 
 {
  CWnd* p = CWnd::FromHandle(hOsk);
  CString sT;
  p->GetWindowTextA(sT);
  DWORD pid2;
  DWORD  pid = GetWindowThreadProcessId(hOsk, &pid2); // 바로서치 핸들로 프로세스 id를 구한다.

  HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid2); 
 
      if(hProcess)
      {
         if(TerminateProcess(hProcess, 0))
         {
            unsigned long nCode; //프로세스 종료 상태 
            GetExitCodeProcess(hProcess, &nCode);
         }

         CloseHandle(hProcess); 
      }

  AfxMessageBox(sT);
 }

Posted by SB패밀리

내가 특정 프로그램명을 알고 있을 때
그 특정 프로그램의 윈도우 핸들을 구할 수 있다.
그러면, 핸들에서 프로세스 ID를 구할 수 있게 된다.

그 다음 순서는 분명하다.
프로세스를 강제로 종료시키는 것이다.
그럼 아래 소스를 살펴보자.


HWND hOsk=::FindWindow(NULL, "SBRICH");
 if(hOsk)
 {
  CWnd* p = CWnd::FromHandle(hOsk);
  CString sT;
  p->GetWindowTextA(sT);
  DWORD pid2;
  DWORD  pid = GetWindowThreadProcessId(hOsk, &pid2); // 바로서치 핸들로 프로세스 id를 구한다.

  HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid2);
 
      if(hProcess)
      {
         if(TerminateProcess(hProcess, 0))
         {
            unsigned long nCode; //프로세스 종료 상태
            GetExitCodeProcess(hProcess, &nCode);
         }

         CloseHandle(hProcess);
      }

  AfxMessageBox(sT);
 }
 

Posted by SB패밀리