'enumwindowsproc'에 해당되는 글 1건

  1. 2012.10.05 EnumWindowsProc

EnumWindowsProc

MFC 2012. 10. 5. 19:02

아래는 프로세스 아이디로 HWND를 구하는 코드이다

먼저 CreateToolhelp32Snapshot를 이용해서 현재 실행되고 있는 프로세스의 ID를 구해놓는다

EnumWindow 함수를 호출 하면

EnumWindowProc 에서 GetWindowThreadProcessId함수를 이용, 프로세스ID를 구한 후

EnumWindowProc의 lParam으로 들어온 구해놓은 프로세스ID와 

GetWindowThreadProcessId를 이용해서 얻어온 프로세스ID를 비교해서 같으면

EnumWindowsProc의 첫번째 인자 hWnd가 구해놓은 프로세스ID의 HWND이다

 

HWND g_hWnd;

 

BOOL CALLBACK EnumWindowsProc(  HWND hWnd, LPARAM lParam )

{

  g_hWnd= 0;

        DWORD PID = 0;

        ::GetWindowThreadProcessId(hWnd, &PID);

 

  if((DWORD)lParam == PID)

        {

              g_hWnd= hWnd;

              return FALSE;

         }

         return TRUE;

}

 

 

void CTestDlg::OnBnClickedButton1()

{

        HANDLE hSnapshot = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);

        if((int)hSnapshot != -1)

       {

             PROCESSENTRY32 pe32 ;

             BOOL bContinue ;

             if (Process32First(hSnapshot, &pe32))

            {

                  do

     {

                          if((!EnumWindows(EnumWindowsProc, pe32.th32ProcessID)) && (g_hWnd!= 0));

       {

//Finded

        }

                  }while(Process32Next(hSnapshot, &pe32 ));

             }

       }

       CloseHandle(hSnapshot);

}

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

BOOL EnumWindows(
WNDENUMPROC lpEnumFunc,  // callback function
LPARAM lParam                      // application-defined value
);
EnumWindows 함수는

데스크 탑 아래의 모든 윈도우 목록을 조사해서 콜백 함수로 넘겨 준다.

첫번째 인수로 콜백 함수의 함수 포인터가 필요한데 다음 원형을 가지는 콜
백 함수를 만들어 주어야 한다.

BOOL CALLBACK EnumWindowsProc(
HWND hwnd,       // handle to parent window
LPARAM lParam  // application-defined value
);

이 함수의 hwnd로는 찾은 윈도우의 핸들이 전달된다. 핸들로 원하는 작업을 할 수 있다.

윈도우 찾기를 그만 하고 싶으면 FALSE를 리턴하고 끝까지 찾기를 계속하려면 TRUE를 리턴하면 된다.

'MFC' 카테고리의 다른 글

IWebBrowser2 얻기  (0) 2012.10.05
GDI object 생성, 소멸  (0) 2012.10.05
DrawDragRect를 이용한 사각영역 그리기  (0) 2012.10.05
Drag file on dialog  (0) 2012.10.05
Dialog에서 부모 윈도우 알아내기  (0) 2012.10.05
Posted by 떡공이
,