FindWindow, FindWindowEx, WindowFromPoint
윈도우 찾기
윈도우 간의 상호작용을 위해서는 우선 윈도우의 핸들을 알아야지 윈도우 관련 함수들을 사용할 수 있다.
원하는 윈도우의 핸들을 조사하는 기본적인 함수는 FindWindow이다.
1. FindWindow
HWND FindWindow(
LPCTSTR lpClassName, //조사할 윈도우의 클래스 이름
LPCTSTR lpWindowName //조사할 윈도우의 캡션
);
조건에 맞는 윈도우를 찾으면 윈도우의 핸들을 리턴해 주고 못찾을경우 NULL을 리턴해준다.
ex)
HWND h1 = FindWindow(NULL, L"NateOn");
HWND h2 = FindWindow(L"My_Class", NULL);
2. FindWindowEx
HWND FindWindowEx(
HWND hwndParent, //hwndParent에 속한 차일드 윈도우를 검색해낸다. NULL이면 데스크탑 윈도우의 차일드를 검색한다.
HWND hwndChildAfter, //검색을 시작할 차일드 윈도우를 지정한다. NULL이면 첫번째 차일드부터 검색한다.
LPCTSTR lpszClass, //조사할 윈도우의 클래스 이름
LPCTSTR lpszWindow //조사할 윈도우의 캡션
);
ex)
HWND h1 = FindWindowEx(hWnd, NULL, NULL, L"에디트");
결과 : 메인 윈도우 아래 캡션이 "에디트"라는 컨트롤이 존재할 경우 그 컨트롤의 윈도우 핸들을 반환해준다.
3. WindowFromPoint
HWND WindowFromPoint(
POINT Point
);
: 화면 좌표로 윈도우를 검색하는 함수로 인수로 화면 좌표를 POINT형으로 넣어주면 된다.
: 조건에 맞는 윈도우를 찾으면 윈도우의 핸들을 리턴해 주고 못찾을경우 NULL을 리턴해준다.
ex)
POINT pt;
GetCursorPos(&pt);
HWND h2 = WindowFromPoint(pt);
결과 : 마우스의 스크린좌표를 가져오는 GetCursorPos 함수로 마우스 좌표를 얻고 그 좌표를 인수로 넘겨주었다.
마우스 아래 있는 윈도우의 핸들을 가져오게 된다.
* 스파이 같은 윈도우의 속성을 조사하는 유틸리티나 드래그 & 드랍시 드랍 윈도우를 조사할 때 등 여러모로 쓸모가 많다.
부모 윈도우의 차일드 윈도우를 조사하는 함수 ( 나중에 사용할 일 있으면 다시 정리)
4. ChildWindowFromPoint
HWND ChildWindowFromPoint(
HWND hWndParent,
POINT Point
);
5. ChildWindowFromPointEx
HWND ChildWindowFromPointEx(
HWND hwndParent,
POINT pt,
UINT uFlags
);
'scrap > C/C++' 카테고리의 다른 글
[EnumWindows()] (0) | 2011.09.26 |
---|---|
현재 실행중인 프로세스를 종료하는 C언어, C++ (0) | 2011.09.26 |
윈도우 핸들 가져오기 (0) | 2011.09.26 |
실행된 프로그램의 특정 버튼을 누르게 (0) | 2011.09.26 |
C 에서 Dos 명령어 실행하기 (0) | 2011.09.14 |