kkuzil.own@gmail.com

Posted
Filed under Development/Windows API

Windows Hook


1. 명령어

  • SetWindowsHookEx()
  • UnhookWindowsHookEx()

2. 종류

훅 타입

설명

WH_CALLWNDPROC,

 

WH_CALLWNDPROCRET

SendMessage 함수로 메시지를 보내기 전에

 

WH_CALLWNDPROC 훅 프로시저가 호출되며 윈도우 프로시저가 메시지를 처리한 후에 WH_CALLWNDPROCRET 훅 프로시저가 호출된다. WH_CALLWNDPROCRET 훅은 훅 프로시저에게 CWPRETSTRUCT 구조체를 전달하는데 이 구조체에는 메시지와 메시시를 처리한 리턴값을 담고 있다.

 

WH_CBT

윈도우를 생성, 파괴, 활성화, 최대, 최소, 이동, 크기변경하기 전에, 시스템 명령을 처리하기 전에, 마우스나 키보드 메시지를 메시지 큐에서 제거하기 전에 이 훅 프로시저가 호출된다. 이 훅은 컴퓨터를 이용한 훈련 프로그램(Computer Based Training)에서 주로 사용된다.

 

WH_DEBUG

다른 타입의 훅 프로시저를 호출하기 전에 이 타입의 훅 프로시저를 호출하며 다른 타입의 훅 프로시저 호출을 허가할 것인지를 결정한다.

 

WH_GETMESSAGE

GetMessage나 PeekMessage 함수로 조사되는 메시지를 감시한다.

 

WH_JOURNALRECORD

키보드나 마우스를 통해 입력되는 이벤트를 감시하고 기록한다. 기록된 이벤트는 WH_JOURNALPLAYBACK 훅에서 재생할 수 있다. 이 훅은 전역으로만 설치할 수 있으며 특정 스레드에만 설치할 수는 없다.

 

WH_JOURNALPLAYBACK

시스템 메시지 큐에 메시지를 삽입할 수 있도록 한다. 이 훅에서 WH_JOURNALRECORD 훅에서 기록한 키보드 마우스 입력을 재생할 수 있다. 이 훅이 설치되어 있으면 마우스나 키보드 입력은 금지된다. 이 훅은 전역으로만 설치할 수 있으며 특정 스레드에만 설치할 수는 없다.

 

WH_KEYBOARD

WM_KEYDOWN, WM_KEYUP 등의 키보드 메시지를 감시한다.

 

WH_MOUSE

마우스 메시지를 감시한다.

 

WH_MSGFILTER,

WH_SYSMSGFILTER

메뉴, 스크롤 바, 메시지 박스, 대화상자 등에 의해 처리되는 메시지와 사용자의 Alt+Tab키, Alt+Esc키 입력에 의한 포커스 이동을 감시한다. WH_MSGFILTER훅은 훅 프로시저를 설치한 프로그램에 대해서만 동작하며 WH_SYSMSGFILTER 훅은 모든 프로그램에 대해서 동작한다.

 

WH_SHELL

쉘 프로그램이 활성화되거나 새로운 최상위 윈도우가 만들어지거나 파괴될 때 이 훅 프로시저가 호출된다.

 

WH_FOREGROUNDIDLE

포그라운드 스레드가 한가해질 때 이 훅 프로시저가 호출된다. 아이들 시에 우선 순위가 낮은 작업을 하고 싶을 때 이 훅을 사용한다.

 

WH_KEYBOARD_LL

스레드의 입력큐에 붙여지는 키보드 입력 메시지를 감시한다. WH_KEYBOARD보다 더 저수준의 메시지를 받을 수 있지만 NT 4.0 SP 3 이후에만 사용할 수 있다.

 

WH_MOUSE_LL

스레드의 입력큐에 붙여지는 마우스 입력 메시지를 감시한다.

2012/05/16 10:33 2012/05/16 10:33