3강_윈도우_핸들

Download Report

Transcript 3강_윈도우_핸들

3. 윈도우 핸들 제어
Window handle
 Windows 환경의 핸들과 PID
 프로세스 통신을 하기 위해 존재하는 것이 아
니라 객체가 존재하는 위치를 알려주기위해 사
용되는 것.
 윈도우에서 핸들이란
 응용 프로그램과 통신하기 위한 것.
 핸들은 통신을 하기 위해서도 필요하지만,
객체의 상태를 변경한다거나, 또는 그 객체를
종료해야 할 때도 필요하다.
윈도우 제목과 윈도우 클레스로 찾기 1
 연결파일 : user32.dll
 FindWindowA(문자: 클래스명, 윈도우제목);
 FindWindow() (MFC)
 예제 :
 [클래스명이 'TNHForm'이고, 창 제목이 '창0'인 창을
찾습니다.]
FindWindowA("TNHForm", "창0");
 주의 :
만일 클래스명 및 윈도우제목도 같은 프로그램이
있다면 난감함 --;
윈도우 제목과 윈도우 클레스로 찾기 2
 연결파일 : user32.dll

FindWindowExA(실수: 부모창, 다음창; 문자: 클래스명, 윈도우제목);



부모창 : 부모창의 핸들에서 자식 객체를 찾습니다. 사용 안할경우 0을
넣으시면 됩니다.
다음창 : 여기에 특정 창의 핸들을 넣으시면 그 특정창 다음부터 창을 찾
습니다.

[동일한 클래스명과 제목명이 여러개 있을경우 편리합니다.]

사용안하시려면 0 을 넣는다.

클래스명과 윈도우제목은 FindWindowA 와 동일합니다.

FindWindowEx (MFC)
예제 :

[클래스명이 'TNHForm'이고, 창 제목이 '창0'인 창을 찾습니다.]
FindWindowA(0, 0, "TNHForm", "창0");
부모 윈도우 핸들 찾기
 연결파일 : user32.dll
함수 :
 GetParent(hWnd);
 예제 :
 A라는 윈도우 핸들의 부모 윈도우 핸들츨 찾기
 HWND Parent = GetParent(A);
특정 좌표에 있는 창의 핸들 찾기
 연결파일 : user32.dll
함수 :
 WindowFromPoint(CPoint);
 예제 :
 [X좌표 200 Y좌표 300에 위치한 창의 핸들을
얻습니다.]
 Cpoint pnt; pnt.x = , pnt.y = ;
 WindowFromPoint(pnt);
현재 활성화된 창의 핸들 찾기
 연결파일 : user32.dll
함수 :
 GetActiveWindow();
 예제 :
 핸들 = GetActiveWindow();
현재 포커스[초점]이 있는 창 핸들찾기
 연결파일 : user32.dll
함수 :
GetFocus();
 예제 :
 핸들 = GetFocus();
Z-order 중 가장 앞 윈도우 찾기
 연결파일 : user32.dll
함수 :
 GetForegroundWindow();
 예제 :
 핸들 = GetForegroundWindow();
기타 윈도우 핸들 구하기 함수
 다음창의 핸들구하기
 이전창의 핸들구하기
 부모창의핸들 구하기
 데스크탑윈도우 핸들구하기
 가장 처음창의 핸들구하기
 가장 마지막창의 핸들구하기
IPC Message Sending
 윈도우 간의 메세지 전송
 Inter Process Communiction
 SendMessage()
 SendMessage(대상 윈도우 핸들,전송 메세지,
wParam, lParam);
 lParam ,wParam은 메세지의 부가정보
 Param 미 사용시 NULL 값
 PostMessage()
 PostMessage(대상 윈도우 핸들, WM_CLOSE,
NULL, NULL);
Post VS Send Message
 PostMessage와 SendMessage의 차이점
 PostMessage로 보내게 되면 메세지를 해당 윈
도우에 던지고 바로 리턴
 [BOOL값 리턴]
 SendMessage는 메세지를 보낸후 그 메세지가
처리된후 리턴
 [메시지의 종류별 상이한 리턴]
 SendMessage는 동기화가 필요할때 사용
 동기화 필요없이 메세지만 보내려면
PostMessage를 이용
SPY++
Message Monitor
Test 목표




윈도우 핸들의 이해
IPC의 개념과 사용 함수
SPY++의 기능과 유사 함수
실습 :
 IE window실행 차단
 탐색기 주소줄을 통한 인터넷 접속 차단
 내문서 주소줄을 통한 인터넷 접속 차단
Report !
 수업 중 결과물인 “인터넷 접근 차단 어플
리케이션”을 VB실행 파일로 포팅할 것




Win API 검색 및 등록
타이머 적용
타이머 메시지 핸들 적용
관련 윈도우를 찾아 종료할 것.
 과제 수행 결과물
 소스코드 인쇄 후 제출
3. 윈도우 핸들 제어