CHAP. 7
윈도우 핸들
1
2
메모장에 문자열 출력
마우스 왼쪽 버튼 눌림에 대해
나와 상관없는 메모장 윈도우에 문자열 출력
case WM_LBUTTONDOWN:
HWND hNote;
hNote = ;
HDC hdc;
hdc = GetDC(hNote);
TextOut(hdc, 0, 0, "Hello", 5);
ReleaseDC(hNote, hdc);
break;
여기에 메모장의 윈도우
핸들을 넣어주면 돼
메모장 윈도우 핸들만 알면 가능할 것 같기도 하다 신기해
운영체제는 모든 것을 알고 있다. 윈도우 핸들 쯤이야
3
1. Spy++ 이용
Visual Studio 2010의 경우, [도구]-[Spy++] 메뉴 클릭
4
[Search]-[Find] 메뉴 클릭
이 아이콘을 원하는 윈도우로 드래그
해당 윈도우의 테두리가 두껍게 표시됨
이와 동시에 윈도우 핸들, 윈도우 타이틀, 윈도우 클래스 이름이 출력됨
5
프레임 윈도우
클라이언트 윈도우
아이콘을 메모장 윈도우로 가져갔을 때
윈도우 핸들: 005409FA
윈도우 타이틀: “제목없음 – 메모장”
윈도우 클래스: Notepad
6
case WM_LBUTTONDOWN:
HWND hNote;
hNote = (HWND)0x005409FA;
HDC hdc;
hdc = GetDC(hNote);
TextOut(hdc, 0, 0, "Hello", 5);
ReleaseDC(hNote, hdc);
break;
16진수 이므로 숫자 앞에 0x를 붙임
윈도우 핸들의 데이터 타입에 맞게 HWND로 타입 캐스팅
프레임 윈도우 핸들을 얻었을 경우클라이언트 윈도우 핸들을 얻었을 경우
7
HWND FindWindow(LPCSTR lpClassName, LPCSTR lpWindowName)
검색할 윈도우 클래스 이름
모르면 NULL
윈도우 핸들 획득
2. FindWindow 함수 이용
검색할 윈도우 타이틀 이름
윈도우를 검색하면 윈도우 핸들을, 실패하면 NULL 반환
8
case WM_LBUTTONDOWN:
HWND hNote;
hNote = FindWindow(NULL, "제목없음 – 메모장 ");
HDC hdc;
hdc = GetDC(hNote);
TextOut(hdc, 0, 0, "Hello", 5);
ReleaseDC(hNote, hdc);
break;
윈도우 클래스 이름을 모르면 NULL로 설정
윈도우 핸들을 알면
다른 프로그램의 윈도우도 제어 가능
윈도우 핸들이 관건이구나

07 윈도우 핸들

  • 1.
  • 2.
    2 메모장에 문자열 출력 마우스왼쪽 버튼 눌림에 대해 나와 상관없는 메모장 윈도우에 문자열 출력 case WM_LBUTTONDOWN: HWND hNote; hNote = ; HDC hdc; hdc = GetDC(hNote); TextOut(hdc, 0, 0, "Hello", 5); ReleaseDC(hNote, hdc); break; 여기에 메모장의 윈도우 핸들을 넣어주면 돼 메모장 윈도우 핸들만 알면 가능할 것 같기도 하다 신기해 운영체제는 모든 것을 알고 있다. 윈도우 핸들 쯤이야
  • 3.
    3 1. Spy++ 이용 VisualStudio 2010의 경우, [도구]-[Spy++] 메뉴 클릭
  • 4.
    4 [Search]-[Find] 메뉴 클릭 이아이콘을 원하는 윈도우로 드래그 해당 윈도우의 테두리가 두껍게 표시됨 이와 동시에 윈도우 핸들, 윈도우 타이틀, 윈도우 클래스 이름이 출력됨
  • 5.
    5 프레임 윈도우 클라이언트 윈도우 아이콘을메모장 윈도우로 가져갔을 때 윈도우 핸들: 005409FA 윈도우 타이틀: “제목없음 – 메모장” 윈도우 클래스: Notepad
  • 6.
    6 case WM_LBUTTONDOWN: HWND hNote; hNote= (HWND)0x005409FA; HDC hdc; hdc = GetDC(hNote); TextOut(hdc, 0, 0, "Hello", 5); ReleaseDC(hNote, hdc); break; 16진수 이므로 숫자 앞에 0x를 붙임 윈도우 핸들의 데이터 타입에 맞게 HWND로 타입 캐스팅 프레임 윈도우 핸들을 얻었을 경우클라이언트 윈도우 핸들을 얻었을 경우
  • 7.
    7 HWND FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName) 검색할 윈도우 클래스 이름 모르면 NULL 윈도우 핸들 획득 2. FindWindow 함수 이용 검색할 윈도우 타이틀 이름 윈도우를 검색하면 윈도우 핸들을, 실패하면 NULL 반환
  • 8.
    8 case WM_LBUTTONDOWN: HWND hNote; hNote= FindWindow(NULL, "제목없음 – 메모장 "); HDC hdc; hdc = GetDC(hNote); TextOut(hdc, 0, 0, "Hello", 5); ReleaseDC(hNote, hdc); break; 윈도우 클래스 이름을 모르면 NULL로 설정 윈도우 핸들을 알면 다른 프로그램의 윈도우도 제어 가능 윈도우 핸들이 관건이구나