WinCE에서 Key Hooking하는 방법

31437 
Created at 2006-09-28 04:06:09 
544   0   0   0  
MSDN에서 알아낸 PDA폰에서의 키 후킹하는 방법입니다.

=======================================================================================

삼성 SPH-M4300에서 프로그래밍 해보고 테스트도 완료했습니다.
잘되더군요.

더 자세한 정보를 알아보시려면 다음의 뉴스그룹을 참조하시고:

http://groups.google.com/group/microsoft.public.windowsce.app.development/browse_thread/thread/e0243550d63d8f63/2bba7323170c798a?lnk=st&q=pocket+pc+SetWindowsHookExW&rnum=5#2bba7323170c798a

샘플 코드 보여드립니다:


extern "C"
{
typedef LRESULT (CALLBACK* HOOKPROC)(int code, WPARAM wParam, LPARAM lParam);


typedef struct tagKBDLLHOOKSTRUCT
{
  DWORD vkCode;  // virtual key code
  DWORD scanCode;  // scan code
  DWORD flags;  // flags
  DWORD time;   // time stamp for this message
  DWORD dwExtraInfo; // extra info from the driver or keybd_event
} KBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;


HHOOK WINAPI SetWindowsHookExW( int idHook, HOOKPROC lpfn, HINSTANCE hmod, DWORD dwThreadId );
BOOL WINAPI UnhookWindowsHookEx( HHOOK hhk );
LRESULT WINAPI CallNextHookEx( HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam );
LRESULT CALLBACK KeyboardProc( int code,  WPARAM wParam, LPARAM lParam );
#define SetWindowsHookEx  SetWindowsHookExW



}


HHOOK hKeyboardHook = 0;

#define HC_ACTION  0
#define PPC_KEY_APP1          0xc1
#define PPC_KEY_APP2          0xc2
#define PPC_KEY_APP3          0xc3
#define PPC_KEY_APP4          0xc4
#define PPC_KEY_APP5          0xc5
#define PPC_KEY_SCHEDULE      0xc1
#define PPC_KEY_ADDRESS       0xc2
#define PPC_KEY_MAGICN        0xc3
#define PPC_KEY_LAUNCHER      0xc4
#define PPC_KEY_RECORD        0xc5

#define PPC_KEY_CALL          0x72
#define PPC_KEY_HANGUP        0x73
#define PPC_KEY_VOLUME_UP     0x74
#define PPC_KEY_VOLUME_DOWN   0x75
#define PPC_KEY_VOLUME_UP2    0x26
#define PPC_KEY_VOLUME_DOWN2  0x28
#define PPC_KEY_CANCEL        0x08

#define WH_JOURNALRECORD 0
#define WH_JOURNALPLAYBACK 1
#define WH_KEYBOARD_LL 20

//Notification Code
LRESULT CALLBACK KeyboardProc( int code,  WPARAM wParam, LPARAM lParam )
{
    PKBDLLHOOKSTRUCT pKeyStruct = (PKBDLLHOOKSTRUCT)lParam;
    LRESULT    lResult = 0;


if ((AfxGetMainWnd()->m_hWnd != NULL) &&
     (code   == HC_ACTION)    &&
  (wParam == WM_KEYDOWN) )
{


  switch(pKeyStruct->vkCode )
  {
    case PPC_KEY_APP1:
    case PPC_KEY_APP2:
    case PPC_KEY_APP3:
    case PPC_KEY_APP4:
    case PPC_KEY_APP5:
    case PPC_KEY_CALL:
    case PPC_KEY_HANGUP:
    case PPC_KEY_CANCEL:
   lResult = 1;
   break;
  }


  if (0 == lResult)
    lResult = CallNextHookEx(hKeyboardHook, code,  wParam, lParam); 

  // Return true if hook was handled, false to pass it on
  return lResult;
}


void MyCEView::OnInitialUpdate()
{
  CView::OnInitialUpdate();

  hKeyboardHook = SetWindowsHookExW(
    WH_KEYBOARD_LL, 
    (HOOKPROC) KeyboardProc, // address of hook procedure
    NULL,  // handle to application instance
    0 );
}


BOOL MyCEView::DestroyWindow()
{
  if (0 != hKeyboardHook)
    UnhookWindowsHookEx(hKeyboardHook);

  return CView::DestroyWindow();
}


Tags: WINCE 윈도우즈 Share on Facebook Share on X

◀ PREVIOUS
BITMAP 오브젝트에서 가로,세로 크기 알아내기
▶ NEXT
마우스로 윈도우 드래그하여 이동시키는 비기
  Comments 0
Login for comment
SIMILAR POSTS

비트맵을 배경으로 뿌리고 그 위에 컨트롤 올리는 방법 (created at 2006-09-28)

마우스로 윈도우 드래그하여 이동시키는 비기 (created at 2006-09-28)

불투명 윈도우 만들기 (created at 2006-09-28)

투명 윈도우 만들기 (created at 2006-09-28)

GDI+ Programming 방법 (created at 2006-09-28)

CFileDialog - File Open Example (created at 2006-09-28)

윈도우 옮기는 API - SetWindowPos (created at 2006-09-28)

BITMAP 오브젝트에서 가로,세로 크기 알아내기 (created at 2006-09-28)

비트맵을 파일에서 로딩하는 비기 (created at 2006-09-28)

듀얼 모니터에서 Focused Monitor의 Rect 알아내기 (created at 2006-09-28)

IE Control을 사용하여 만든 어플리케이션에서 javascript로 어플리케이션에 정의된 함수 호출하는 방법 (created at 2006-09-28)

프로그램에서 버젼(version) 정보 읽어주는 소스 (created at 2006-09-28)

Broadcast를 이용한 Application 종료 (created at 2006-09-28)

DirectShow - NULL Rendering Example (created at 2006-09-28)

모달리스 다이얼로그의 종료 버튼을 클릭했을 때 종료가 안될때... (created at 2006-09-28)

ActiveX에서 바이너리 데이터 파라메터로 안깨지게 받는법 (created at 2006-09-28)

ListCtrl에서 아이템 추가하기 예제 (created at 2006-09-28)

RDP(Remote Desktop Protocol) Port 값 가져오고/바꿔주기 (created at 2006-09-28)

드라이브 문자 알아내는 소스 (created at 2006-09-28)

ActiveX에 다이얼로그 붙이기 (created at 2006-09-28)

웹브라우져가 떠서 웹페이지 보이게 하는 소스 (created at 2006-09-28)

Toolbar에서 Icon 없애기 (created at 2006-09-28)

String Find Function (StrFnd) (created at 2006-09-28)

작업관리자에 프로그램 안뜨게 하기 (created at 2006-09-28)

파일에서 한줄만 읽어다 return 해주는 소스 (created at 2006-09-28)

HTML 긁어오는 프로그램 소스 (created at 2006-09-28)

IE 패치에 따른 object, embed, applet 대처 방안 (created at 2006-09-28)

빈폴더 찾아내기 (created at 2006-09-29)

프로세스명으로 프로세스 죽이는 함수 (created at 2006-09-29)

자기자신 IP알아내기(로칼컴퓨터) (created at 2006-09-29)

OTHER POSTS IN THE SAME CATEGORY

웹브라우져가 떠서 웹페이지 보이게 하는 소스 (created at 2006-09-28)

ActiveX에 다이얼로그 붙이기 (created at 2006-09-28)

드라이브 문자 알아내는 소스 (created at 2006-09-28)

ListCtrl에서 아이템 추가하기 예제 (created at 2006-09-28)

ActiveX에서 바이너리 데이터 파라메터로 안깨지게 받는법 (created at 2006-09-28)

모달리스 다이얼로그의 종료 버튼을 클릭했을 때 종료가 안될때... (created at 2006-09-28)

DirectShow - NULL Rendering Example (created at 2006-09-28)

Broadcast를 이용한 Application 종료 (created at 2006-09-28)

IE Control을 사용하여 만든 어플리케이션에서 javascript로 어플리케이션에 정의된 함수 호출하는 방법 (created at 2006-09-28)

윈도우 옮기는 API - SetWindowPos (created at 2006-09-28)

CFileDialog - File Open Example (created at 2006-09-28)

GDI+ Programming 방법 (created at 2006-09-28)

투명 윈도우 만들기 (created at 2006-09-28)

불투명 윈도우 만들기 (created at 2006-09-28)

마우스로 윈도우 드래그하여 이동시키는 비기 (created at 2006-09-28)

BITMAP 오브젝트에서 가로,세로 크기 알아내기 (created at 2006-09-28)

비트맵을 파일에서 로딩하는 비기 (created at 2006-09-28)

듀얼 모니터에서 Focused Monitor의 Rect 알아내기 (created at 2006-09-28)

프로그램에서 버젼(version) 정보 읽어주는 소스 (created at 2006-09-28)

RDP(Remote Desktop Protocol) Port 값 가져오고/바꿔주기 (created at 2006-09-28)

UPDATES

햄과 소세지가 우리 몸에 일으키는 부작용 (updated at 2024-04-27)

글루코사민 vs. 콘드로이친: 무엇이 더 나은 관절 건강 보조제일까? (created at 2024-04-22)

광주 5·18 민주화운동 알린 테리 앤더슨 前 AP 기자 (created at 2024-04-22)

콘드로이친의 염증 감소효과 (updated at 2024-04-22)

코사민 DS - 글루코사민+콘드로이친 복합물이 함유된 퇴행성 관절 건강보조제 (updated at 2024-04-22)

삼겹살 먹을때 환상조합 (created at 2024-04-22)

일본 여중생의 특이한 취향 (created at 2024-04-22)

우리가 먹는 약물이 바꿔버린 생태계 (created at 2024-04-21)

일본에서 그린 상상속의 사무직과 현실속의 사무직 (updated at 2024-04-21)

북한 미대생들이 그린 북한 최고존엄 김정은 (created at 2024-04-21)

입사 후 1년도 되지 않은 회사에서 구조조정에 의한 퇴직 불응에 따른 해고 처리시 대응 가능한 방법 (updated at 2024-04-20)

한고은님의 옛날 사진 (updated at 2024-04-20)

소녀대 - Bye Bye Girl (updated at 2024-04-13)

대한민국 날씨 근황 (created at 2024-04-13)

성일종 인재육성 강조하며 이토 히로부미 언급 - 인재 키운 선례? (updated at 2024-04-13)

일제강점기가 더 살기 좋았을지도 모른다는 조수연 국민의힘 후보 - 친일파? (updated at 2024-04-13)

Marshall Ha님의 샤오미 SU7 시승기 - 테슬라의 일론 머스크님이 긴장할만한 느낌 (updated at 2024-04-09)

윙크하는 귀염둥이 반려견들 (created at 2024-04-08)

달콤 살벌한 고백 (created at 2024-04-08)

북한 최정예 공수부대 훈련 모습 (updated at 2024-04-02)

맛있었던 친구 어머니의 주먹밥이 먹고 싶어요 (created at 2024-04-02)

자리 마음에 안든다고 6급 공무원 패는 농협 조합장 (created at 2024-03-26)

85세 딸 짜장면 사주는 102세 어머니 (created at 2024-03-26)

1990년대 감각파 도둑 (created at 2024-03-26)

치매에 걸린 69살의 브루스 윌리스가 전부인 데미무어를 보고 한 말 (updated at 2024-03-22)

경제는 대통령이 살리는 것이 아닙니다 라던 윤석열대통령 - 상황 안좋아지자 여러 전략을 펼쳤지만, 부작용 속출했던 2024년의 봄 (updated at 2024-03-13)

극빈의 생활을 하고 배운것이 없는 사람은 자유가 뭔지도 모를 뿐 아니라 왜 개인에게 필요한지에 대한 필요성을 못느낀다는 윤석열 대통령 (updated at 2024-03-08)

조선일보를 안본다는 사람들이 말하는 그 이유 - 천황폐하, 전두환 각하, 김일성 장군 만세? (created at 2024-03-07)

광폭타이어를 장착하면 성능이 좋아질거라는 착각 (updated at 2024-03-03)

면허시험장에서 면허갱신하면 하루만에 끝나나? (updated at 2024-03-03)