OS 윈도우의 대부분(버튼,입력박스,윈도우창 등)은 윈도우라고 하고 핸들을 갖으며

그 윈도우가 여러 종류의 메세지(윈도우 메세지)를 받고 각 메세지에 따른 처리를 한다.

그 윈도우 핸들을 찾는 도구는 spy++이라는 도구가 있으며

사용법은 도움말이, 기타 검색을 하면 많은 정보가 나온다.

 

여기서는 윈도우 핸들을 찾기 위해서

findwindow나 findwindowex API를 사용 계단식으로 점차 내려가는것이 아니라.

코드를 작성하여 제일 상단의 윈도우 핸들을 주고, 그 하부의 윈도우를 검색하여

조건에 일치하는 핸들을 반환해주는 소스를 작성할가 한다.

 

spy++를 사용 IE 브라우저의 윈도우 핸들을 보았다.

(사용자 OS마다 구조가 틀릴수 있습니다)

SPY++로 본 계층 구조로 표시된 윈도우 핸들

위 그림처럼 핸들이 계단식으로 쭉 나와있다.

상위의 핸들 006B0712(Google 드라이브 - Internet Explorer)에서

하위의 00B09A2(Internet Explorer_server) 까지의 핸드를 찾기 위해서는

5회의 findwindow와 findwindowex API를 사용하여 찾을수 있다.

 

재귀함수를 사용 상위의 핸들과, 찾을 조건을 주어 하위에 있는 핸들중 일치하는 첫번째 윈도우를  반환하는 함수이다.

핸들 찾는 재귀함수 코드

인수로 상위 위도우 핸들, 찾을 윈도우 클래스명, 찾을 윈도우 타이틀 을 주면 된다.

 

다음 이미지는 디버그 창에서 위 코드 함수를 호출한 결과이다.

결과

ie.hwnd는 브라우저 핸들이고, 위 SPY++그림의 상위 핸들(006B0712)과 같다.

결과는 찾고자 하는 핸들((Internet Explorer_server) 00B09A2가 나왔다.

+ Recent posts