zoukankan      html  css  js  c++  java
  • MFC学习 消息钩子使用

    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;
    }

    代码下载

  • 相关阅读:
    PAT 1053 住房空置率
    PAT 1078 字符串压缩与解压
    PAT 1024 科学计数法
    HDU 2078 复习时间
    HDU 2065 "红色病毒"问题
    网络协议分析
    多线程同步
    多线程程序设计
    消息队列通讯
    共享内存通讯
  • 原文地址:https://www.cnblogs.com/barrysgy/p/3247911.html
Copyright © 2011-2022 走看看