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

인터넷 익스플로러 윈도우 핸들 구하기는 어려운 게 아닌 만큼 별로 설명이 필요 없을 듯 하다.

버전에 따라 다르기는 하지만 우선 아래의 소스로 구해보면 감은 잡을 수 있을 것이다.


HWND hIEWnd;
 HWND hChildWnd;


 hIEWnd = FindWindow(_T("IEFrame"), NULL);
 
 hChildWnd = FindWindowEx(hIEWnd, 0, _T("Shell DocObject View"), NULL);

 //익스플로러 버전마다 틀리므로 아래의 체크를 거쳐야 합니다.
    if(hChildWnd == 0)
 {
        hChildWnd = FindWindowEx(hIEWnd, 0, _T("TabWindowClass"), NULL);
  
        if(hChildWnd == 0)
  {
   hChildWnd = FindWindowEx(hIEWnd, 0, _T("Frame Tab"), NULL);
   
            hChildWnd = FindWindowEx(hChildWnd, 0, _T("TabWindowClass"), NULL);
        }
  hChildWnd = FindWindowEx(hChildWnd, 0, _T("Shell DocObject View"), NULL);
 }
 if (hChildWnd != 0)
  hChildWnd = FindWindowEx(hChildWnd, 0, _T("Internet Explorer_Server"), NULL);




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패밀리

내가 특정 프로그램명을 알고 있을 때
그 특정 프로그램의 윈도우 핸들을 구할 수 있다.
그러면, 핸들에서 프로세스 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패밀리

쌈꼬쪼려 소백촌닭


 HWND hIEWnd;
 HWND hChildWnd;


 hIEWnd = FindWindow(_T("IEFrame"), NULL);
 
 hChildWnd = FindWindowEx(hIEWnd, 0, _T("Shell DocObject View"), NULL);

 //익스플로러 버전마다 틀리므로 아래의 체크를 거쳐야 합니다.
    if(hChildWnd == 0)
 {
        hChildWnd = FindWindowEx(hIEWnd, 0, _T("TabWindowClass"), NULL);
  
        if(hChildWnd == 0)
  {
   hChildWnd = FindWindowEx(hIEWnd, 0, _T("Frame Tab"), NULL);
   
            hChildWnd = FindWindowEx(hChildWnd, 0, _T("TabWindowClass"), NULL);
        }
  hChildWnd = FindWindowEx(hChildWnd, 0, _T("Shell DocObject View"), NULL);
 }
 if (hChildWnd != 0)
  hChildWnd = FindWindowEx(hChildWnd, 0, _T("Internet Explorer_Server"), NULL);

 

Posted by SB패밀리