破坏钩子链
来源:互联网 发布:接口数据规范文档 编辑:程序博客网 时间:2024/04/27 13:22
在我的程序中安装一个局部键盘钩子(thread-specified hook),键盘钩子函数中不调用CallNextHookEx;
原理:
1.钩子链可以被破坏.同一类型的钩子会形成一个链,假如先被调用的钩子没有调用CallNextHookEx的话,后面的钩子将得不到调用.
2.对于某个特定的线程,线程钩子先于系统钩子被调用.
实验:
键盘钩子(WH_KEYBOARD)
我写了个简单的对话框程序,部分代码如下:
1.先声明钩子HHOOK gHook = NULL;
2.键盘钩子函数:
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
MessageBox(AfxGetMainWnd()->GetSafeHwnd(), "Thread hook", "keyboard", MB_OK);
return 0;
//return CallNextHookEx(gHook, nCode, wParam, lParam);
}
3.安装钩子:
DWORD nThreadid = GetCurrentThreadId();
gHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, AfxGetApp()->m_hInstance, nThreadid);
if(gHook == NULL)
{
AfxMessageBox("Install Keyboard Hook Failed", MB_OK);
}
4.卸载钩子
BOOL ret = UnhookWindowsHookEx(gHook);
实验方法如下:
1.先启动另一个程序,安装系统键盘钩子,再启动我的程序,安装局部键盘钩子,实验结果表明系统钩子对我的程序无效.
2.先启动我的程序,安装局部键盘钩子,再启动另一个程序,安装系统键盘钩子.在我的程序中系统键盘钩子无效.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/femalelover/archive/2005/12/12/550765.aspx
- 破坏钩子链
- 破坏
- 钩子
- 钩子
- 钩子
- 钩子
- 钩子
- 钩子
- 钩子
- 钩子
- 钩子
- 钩子
- 钩子
- 钩子
- 钩子
- 钩子
- 破坏HelloWorld
- 遛弯儿破坏
- ubuntu12.04下tftp安装、配置、测试
- hdu 1269 tarjan
- 在Eclipse中开启Tomcat
- c#操作sql和access
- c++ stl 函数作为演算法参数
- 破坏钩子链
- android 电源管理的网址
- 键盘虚拟按键的监视 钩子
- linux 编译c++步骤
- 基于qt的udp聊天发送信息 有四处要设置自动滚屏 --------------- 续上
- 有关UNDO表空间的学习
- Axis单个Webservice的session管理
- UIButton小结
- 图像旋转使用CImage实现