首页 > 代码库 > 钩子编程(HOOK) 留后门与钩子卸载
钩子编程(HOOK) 留后门与钩子卸载
作者 : 卿笃军
问题由来:一般编写钩子程序,我们希望程序一方面能屏蔽键盘鼠标消息,但又希望程序能留有一个“后门”,例如,按下F2退出程序。
下面示例,钩子后门设计与钩子卸载:
第一步:打开VC6.0创建一个基于对话框的MFC应用程序。
第二步:在BOOL CHookDlg::OnInitDialog()函数上面编写如下代码,注意不是OnInitDialog()里面:
HWND g_hWnd = NULL; //窗口句柄 HHOOK g_hKeyboard = NULL; //钩子句柄 //回调函数 LRESULT CALLBACK KeyboardProc(int ncode, WPARAM wParam, LPARAM lParam) { if (VK_F2 == wParam) { ::SendMessage(g_hWnd,WM_CLOSE,0,0); //发送关闭主窗口消息 UnhookWindowsHookEx(g_hKeyboard); //卸载钩子 } return 1; }第三步:在OnInitDialog()函数里面编写如下代码,安装钩子:
g_hWnd = m_hWnd; //获得当前窗口句柄 g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());//安装钩子
第四步:编译->链接->运行。
这里主要是要发送关闭主窗口消息,但是钩子程序又不是类里面的函数,而SendMessage()函数的第一个参数是需要一个窗口句柄,这里我们定义一个全局的窗口句柄,然后用主窗口的句柄m_hWnd将其初始化。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。