C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[49449] 고맙습니다. 근데 또 질문있습니다.
동철이 [] 1173 읽음    2007-05-29 20:43
proc1.cpp 2.4KB 키보드 후킹 예제
그렇네요. 제 실력이 점점 퇴보하는 건지...ㅠㅠ...
그런데 바로 이 예제는 키보드 메시지만 후킹해서 wParam과 lParam에 있는 값들을 보여주는 것인데도 마우스를 클릭할 때에도 왜 Count값은 증가되어서 화면이 갱신되는 것일까요?
실제 실행해 보면 마우스 메시지도 받는 것 처럼 보입니다. 왜 이런 현상이 나는 건지요?
이걸 막으려면 어떻게 합니까?
전체 예문을 첨부했으며 순수 api예제입니다.

LRESULT CALLBACK KeyHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    char str[MAX_PATH];
    RECT rt = {100, 120, 500, 150};
    static int Count = 0;

    if(nCode < 0)
        return CallNextHookEx(hKeyHook, nCode, wParam, lParam);
    hdc = GetDC(hWndMain);
    wsprintf(str, "nCode = %d, wParam = %u, lParam = %08x, Count = %d",
            nCode, wParam, lParam, Count++);
    FillRect(hdc, &rt, (HBRUSH)GetStockObject(WHITE_BRUSH));
    TextOut(hdc, 100, 120, str, strlen(str));
    ReleaseDC(hWndMain, hdc);
    return CallNextHookEx(hKeyHook, nCode, wParam, lParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    char mes[] = "키보드 훅 테스트 프로그램이단다.";

    switch(iMessage)
    {
        case WM_CREATE:
            hKeyHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyHookProc, NULL, GetCurrentThreadId());
            return 0;
        case WM_PAINT:
            hdc = BeginPaint(hWnd,&ps);
            TextOut(hdc, 100, 100, mes, strlen(mes));
            EndPaint(hWnd, &ps);
            return 0;
        case WM_DESTROY:
            UnhookWindowsHookEx(hKeyHook);
            PostQuitMessage(0);
            return 0;
    }
    return (DefWindowProc(hWnd, iMessage, wParam, lParam));
}

+ -

관련 글 리스트
49446 함수 포인터를 전달하는 부분에서 에러가 나는데 어찌할지요 동철이 1277 2007/05/29
49447     Re:함수 포인터를 전달하는 부분에서 에러가 나는데 어찌할지요 아리랑 1394 2007/05/29
49449         고맙습니다. 근데 또 질문있습니다. 동철이 1173 2007/05/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.