SlideShare a Scribd company logo
1 of 8
Download to read offline
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로 설정
윈도우 핸들을 알면
다른 프로그램의 윈도우도 제어 가능
윈도우 핸들이 관건이구나

More Related Content

What's hot

11 노티피케이션코드
11 노티피케이션코드11 노티피케이션코드
11 노티피케이션코드jaypi Ko
 
Java cours n° 2 - classe-objet-constructeur
Java   cours n° 2 - classe-objet-constructeurJava   cours n° 2 - classe-objet-constructeur
Java cours n° 2 - classe-objet-constructeurAbdelwahab Naji
 
Fiche3 ex-sous-programme
Fiche3 ex-sous-programmeFiche3 ex-sous-programme
Fiche3 ex-sous-programmeBaghdadi Wajih
 
Plsql
PlsqlPlsql
PlsqlAz Za
 
XSS Primer - Noob to Pro in 1 hour
XSS Primer - Noob to Pro in 1 hourXSS Primer - Noob to Pro in 1 hour
XSS Primer - Noob to Pro in 1 hoursnoopythesecuritydog
 
Les bases de l'HTML / CSS
Les bases de l'HTML / CSSLes bases de l'HTML / CSS
Les bases de l'HTML / CSSSamuel Robert
 
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートIIopenFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートIIAtsushi Tadokoro
 
.NET Oxford Windows Subsystem for Linux v2
.NET Oxford Windows Subsystem for Linux v2.NET Oxford Windows Subsystem for Linux v2
.NET Oxford Windows Subsystem for Linux v2Stuart Leeks
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeAmir Souissi
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
 
Section1 compound data class
Section1 compound data classSection1 compound data class
Section1 compound data classDương Tùng
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문Daniel Seo
 
Alphorm.com Formation React : Les fondamentaux
Alphorm.com Formation React : Les fondamentauxAlphorm.com Formation React : Les fondamentaux
Alphorm.com Formation React : Les fondamentauxAlphorm
 

What's hot (20)

11 노티피케이션코드
11 노티피케이션코드11 노티피케이션코드
11 노티피케이션코드
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
PL/SQL:les curseurs
PL/SQL:les curseursPL/SQL:les curseurs
PL/SQL:les curseurs
 
Java cours n° 2 - classe-objet-constructeur
Java   cours n° 2 - classe-objet-constructeurJava   cours n° 2 - classe-objet-constructeur
Java cours n° 2 - classe-objet-constructeur
 
Fiche3 ex-sous-programme
Fiche3 ex-sous-programmeFiche3 ex-sous-programme
Fiche3 ex-sous-programme
 
Plsql
PlsqlPlsql
Plsql
 
XSS Primer - Noob to Pro in 1 hour
XSS Primer - Noob to Pro in 1 hourXSS Primer - Noob to Pro in 1 hour
XSS Primer - Noob to Pro in 1 hour
 
Les bases de l'HTML / CSS
Les bases de l'HTML / CSSLes bases de l'HTML / CSS
Les bases de l'HTML / CSS
 
これからはじめる XAML - WPF プログラミング
これからはじめる XAML - WPF プログラミングこれからはじめる XAML - WPF プログラミング
これからはじめる XAML - WPF プログラミング
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートIIopenFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
 
.NET Oxford Windows Subsystem for Linux v2
.NET Oxford Windows Subsystem for Linux v2.NET Oxford Windows Subsystem for Linux v2
.NET Oxford Windows Subsystem for Linux v2
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'Android
 
Section1 compound data class
Section1 compound data classSection1 compound data class
Section1 compound data class
 
Gestion comptes bancaires Spring boot
Gestion comptes bancaires Spring bootGestion comptes bancaires Spring boot
Gestion comptes bancaires Spring boot
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문
 
Alphorm.com Formation React : Les fondamentaux
Alphorm.com Formation React : Les fondamentauxAlphorm.com Formation React : Les fondamentaux
Alphorm.com Formation React : Les fondamentaux
 

More from jaypi Ko

CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic ModelCVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Modeljaypi Ko
 
개념 이해가 쉬운 Variational Autoencoder (VAE)
개념 이해가 쉬운 Variational Autoencoder (VAE)개념 이해가 쉬운 Variational Autoencoder (VAE)
개념 이해가 쉬운 Variational Autoencoder (VAE)jaypi Ko
 
[신경망기초]오류역전파알고리즘구현
[신경망기초]오류역전파알고리즘구현[신경망기초]오류역전파알고리즘구현
[신경망기초]오류역전파알고리즘구현jaypi Ko
 
파이썬설치
파이썬설치파이썬설치
파이썬설치jaypi Ko
 
객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것jaypi Ko
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기jaypi Ko
 
C언어 연산자에 대해 간과한 것
C언어 연산자에 대해 간과한 것C언어 연산자에 대해 간과한 것
C언어 연산자에 대해 간과한 것jaypi Ko
 
[확률통계]04모수추정
[확률통계]04모수추정[확률통계]04모수추정
[확률통계]04모수추정jaypi Ko
 
MFC 프로젝트 시작하기
MFC 프로젝트 시작하기MFC 프로젝트 시작하기
MFC 프로젝트 시작하기jaypi Ko
 
01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기jaypi Ko
 
03 첫번째프로그램
03 첫번째프로그램03 첫번째프로그램
03 첫번째프로그램jaypi Ko
 
[신경망기초] 신경망학습
[신경망기초] 신경망학습[신경망기초] 신경망학습
[신경망기초] 신경망학습jaypi Ko
 
[신경망기초] 합성곱신경망
[신경망기초] 합성곱신경망[신경망기초] 합성곱신경망
[신경망기초] 합성곱신경망jaypi Ko
 
[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현jaypi Ko
 
com architecture
com architecturecom architecture
com architecturejaypi Ko
 
[신경망기초] 소프트맥스회귀분석
[신경망기초] 소프트맥스회귀분석[신경망기초] 소프트맥스회귀분석
[신경망기초] 소프트맥스회귀분석jaypi Ko
 
[신경망기초] 심층신경망개요
[신경망기초] 심층신경망개요[신경망기초] 심층신경망개요
[신경망기초] 심층신경망개요jaypi Ko
 
[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석jaypi Ko
 
[신경망기초] 오류역전파알고리즘
[신경망기초] 오류역전파알고리즘[신경망기초] 오류역전파알고리즘
[신경망기초] 오류역전파알고리즘jaypi Ko
 

More from jaypi Ko (20)

CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic ModelCVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
CVPR 2022 Tutorial에 대한 쉽고 상세한 Diffusion Probabilistic Model
 
개념 이해가 쉬운 Variational Autoencoder (VAE)
개념 이해가 쉬운 Variational Autoencoder (VAE)개념 이해가 쉬운 Variational Autoencoder (VAE)
개념 이해가 쉬운 Variational Autoencoder (VAE)
 
[신경망기초]오류역전파알고리즘구현
[신경망기초]오류역전파알고리즘구현[신경망기초]오류역전파알고리즘구현
[신경망기초]오류역전파알고리즘구현
 
파이썬설치
파이썬설치파이썬설치
파이썬설치
 
객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기
 
C언어 연산자에 대해 간과한 것
C언어 연산자에 대해 간과한 것C언어 연산자에 대해 간과한 것
C언어 연산자에 대해 간과한 것
 
[확률통계]04모수추정
[확률통계]04모수추정[확률통계]04모수추정
[확률통계]04모수추정
 
MFC 프로젝트 시작하기
MFC 프로젝트 시작하기MFC 프로젝트 시작하기
MFC 프로젝트 시작하기
 
01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기
 
03 첫번째프로그램
03 첫번째프로그램03 첫번째프로그램
03 첫번째프로그램
 
[신경망기초] 신경망학습
[신경망기초] 신경망학습[신경망기초] 신경망학습
[신경망기초] 신경망학습
 
[신경망기초] 합성곱신경망
[신경망기초] 합성곱신경망[신경망기초] 합성곱신경망
[신경망기초] 합성곱신경망
 
[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현
 
interface
interfaceinterface
interface
 
com architecture
com architecturecom architecture
com architecture
 
[신경망기초] 소프트맥스회귀분석
[신경망기초] 소프트맥스회귀분석[신경망기초] 소프트맥스회귀분석
[신경망기초] 소프트맥스회귀분석
 
[신경망기초] 심층신경망개요
[신경망기초] 심층신경망개요[신경망기초] 심층신경망개요
[신경망기초] 심층신경망개요
 
[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석
 
[신경망기초] 오류역전파알고리즘
[신경망기초] 오류역전파알고리즘[신경망기초] 오류역전파알고리즘
[신경망기초] 오류역전파알고리즘
 

07 윈도우 핸들

  • 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++ 이용 Visual Studio 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로 설정 윈도우 핸들을 알면 다른 프로그램의 윈도우도 제어 가능 윈도우 핸들이 관건이구나