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. 윈도우 핸들 제어