갈고리 훅.

2688 단어
팁: 시스템 수준 갈고리를 설정하려면 갈고리 함수가 DLL에 있어야 합니다.
WINUSERAPI
HHOOK { ; 0 }
WINAPI
SetWindowsHookEx(
    int idHook,        {    }

    HOOKPROC lpfn, { }
    HINSTANCE hmod, { (EXE、DLL) ; HInstance; 0}
    DWORD dwThreadId); { ; GetCurrentThreadId ; 0 }
)
//     idHook   :
WH_MSGFILTER       = -1; {   ;             }
WH_JOURNALRECORD   = 0;  {   ;                     ,             ;       }
WH_JOURNALPLAYBACK = 1;  {   ;     WH_JOURNALRECORD      ,                 }
WH_KEYBOARD        = 2;  {       ;       }
WH_GETMESSAGE      = 3;  {       ;             }
WH_CALLWNDPROC     = 4;  {       ;             ,   SendMessage      }
WH_CBT             = 5;  {       ;         ,   :      、  、  、     、    }
WH_SYSMSGFILTER    = 6;  {   ;                  }
WH_MOUSE           = 7;  {       ;       }
WH_HARDWARE        = 8;  {       ;        (   、  )   }
WH_DEBUG           = 9;  {       ;           ,       }
WH_SHELL           = 10; {       ;              }
WH_FOREGROUNDIDLE  = 11; {       ;             }
WH_CALLWNDPROCRET  = 12; {       ;              ,   SendMessage      }
WH_KEYBOARD_LL     = 13; //(_WIN32_WINNT >= 0x0400)
WH_MOUSE_LL        = 14; //(_WIN32_WINNT >= 0x0400)

저급 갈고리와 비저급 갈고리의 차이점: WH 로KEYBOARD_LL 및 WHKEYBOARD의 경우
갈고리의 위치가 다르다, WHKEYBOARD_LL은 WH 보다KEYBOARD 선촉발, WHKEYBOARD_LL은 시스템에서 당신의 리셋 함수를 호출합니다. WHKEYBOARD는 리셋 함수를 호출하기 위해 연결된 프로세스입니다.WHKEYBOARD는 프로세스를 삽입합니다. 전역 갈고리라면 모든 프로세스를 삽입합니다. WHKEYBOARD_LL은 프로세스를 삽입할 필요가 없습니다. (그래서 dll에 넣을 필요가 없고 exe에 넣어도 실행할 수 있다고 합니다. 테스트를 거치지 않았습니다.)
         
http://www.xiaozhou.net/ReadNews.asp?NewsID=909
       ,                DLL  ,  ,   SetWindowsHookEx   ,
     DLL            ,              。       ,        ,
        、  、        。                   ,           ,
            、  、      。             ,          。
         、  、     :
1、 DLL def     SECTIONS   MyData READ   WRITE   SHARED 
2、           /SECTION:MyData,rws

좋은 웹페이지 즐겨찾기