/ // CInnerHookDlg message handlers HHOOK g_hMouse = NULL; HHOOK g_hKeyboard = NULL; HWND g_hWnd = NULL; LRESULT CALLBACK MouseProc( int nCode, // hook code WPARAM wParam, // message identifier LPARAM lParam // mouse coordinates ) { return 1; // 屏蔽该线程所有的鼠标消息 } LRESULT CALLBACK KeyboardProc( int code, // hook code WPARAM wParam, // virtual-key code LPARAM lParam // keystroke-message information ) { // if (VK_SPACE == wParam || VK_RETURN == wParam || // (VK_F4 == wParam && (1==(lParam>>29&1))) || VK_ESCAPE == wParam) // { // return 1; // 屏蔽该线程以上的键盘消息 // } // else // { // return CallNextHookEx(g_hKeyboard, code, wParam, lParam); // } //return 1; // 屏蔽该线程所有键盘消息 // 后门关闭程序按键 if (VK_F2 == wParam) { ::SendMessage(g_hWnd, WM_CLOSE, 0, 0); // 调用的是全局函数 UnhookWindowsHookEx(g_hKeyboard); UnhookWindowsHookEx(g_hMouse); } else { return 1; // 屏蔽出后门按键的所有按键 } } BOOL CInnerHookDlg::OnInitDialog() { // TODO: Add extra initialization here g_hWnd = m_hWnd; // 安装钩子过程 g_hMouse = SetWindowsHookEx(WH_MOUSE, MouseProc, NULL, GetCurrentThreadId()); g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, NULL, GetCurrentThreadId()); return TRUE; // return TRUE unless you set the focus to a control }