MFC学習メッセージフック使用

2425 ワード

HANDLE h_KeyBoard;



//       ,   WH_KEYBOARD_LL,  WH_MOUSE_LL   ,          ,          

g_hKeyBoard = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, NULL, GetCurrentThreadId()); 



//    ,        dll   ,   WH_GETMESSAGE           .



h_KeyBoard =SetWindowsHookEx(WH_MOUSE, MouseProc, GetModuleHandle("HookGlobal"), NULL); //   dll   ,      dll  ,   GetMoudleHandle      NULL



UnhookWindowsHookEx(g_hKeyBoard);

 
LRESULT CALLBACK KeyboardProc(  int code,       // hook code

                              WPARAM wParam,  // virtual-key code

                              LPARAM lParam   // keystroke-message information

                              )

{

    /*

    if(VK_SPACE == wParam || ((lParam >> 29 & 1) && VK_F4 == wParam))

        return 1;

    else

        return CallNextHookEx(g_hKeyBoard, code, wParam, lParam);

    */

    if(VK_F2 == wParam)

    {

        ::SendMessage((HWND)g_hWnd, WM_CLOSE, 0, 0);

        UnhookWindowsHookEx(g_hKeyBoard);

        UnhookWindowsHookEx(g_hMouse);

    }

    return 1;

}

コードのダウンロード