生成DLL文件,模块定义文件为:

LIBRARY Hook

EXPORTS

SetHook @2

实现文件如下。其中g_hWnd为所有进程共享,并且绕过了系统对可写数据的写时复制机制,维护的是一份拷贝。

// Hook.cpp #include <windows.h> HHOOK g_hMouse = NULL; HHOOK g_hKeyboard = NULL; // 为Hook.DLL创建一个新的节,将全局变量g_hWnd放入其中 #pragma data_seg("MySec") HWND g_hWnd = NULL; #pragma data_seg() // 设置刚创建的节为共享的节 #pragma comment(linker, "/section:MySec,RWS") // 鼠标钩子过程 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_F2 == wParam) { ::SendMessage(g_hWnd, WM_CLOSE, 0, 0); UnhookWindowsHookEx(g_hKeyboard); UnhookWindowsHookEx(g_hMouse); } else { return 1; // 屏蔽所有键盘消息 } } // 安装鼠标钩子过程的函数 void SetHook(HWND hwnd) // 参数是为了让dll获得调用进程的主窗口的句柄 { g_hWnd = hwnd; // hook所有进程的鼠标、键盘消息 g_hMouse = SetWindowsHookEx(WH_MOUSE, MouseProc, GetModuleHandle("Hook.dll"), 0); g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, GetModuleHandle("Hook.dll"), 0); }

调用DLL的进程的实现:

/ // CHookTestDlg message handlers // 导入函数 __declspec(dllimport) void SetHook(HWND hwnd); BOOL CHookTestDlg::OnInitDialog() { // TODO: Add extra initialization here // 顶层窗口及最大化窗口的实现 int cxScreen, cyScreen; cxScreen = GetSystemMetrics(SM_CXSCREEN); cyScreen = GetSystemMetrics(SM_CYSCREEN); SetWindowPos(&wndTopMost, 0, 0, cxScreen, cyScreen, SWP_SHOWWINDOW); // 调用DLL中的函数 SetHook(m_hWnd); return TRUE; // return TRUE unless you set the focus to a control }

全局钩子(hook鼠标键盘消息)相关推荐

  1. 用键盘全局钩子[Hook]监视多进程键盘操作

    用键盘全局钩子[Hook]监视多进程键盘操作 闲来无事,在WIN2K下用BCB5做了个键盘挂钩小程序,监视全局按键情况.Hook安放和回调函数放在一个单独DLL中,DLL原码如下: //------- ...

  2. Windows 全局钩子 Hook 详解

    监控程序的实现       我们发现一些木马或其他病毒程序常常会将我们的键盘或鼠标的操作消息记录下来然后再将它发到他们指定的地方以实现监听.这种功能其他是利用了全局钩子将鼠标或键盘消息进行了截取,从而 ...

  3. 使用PreTranslateMessage替代钩子函数处理键盘消息

    2002年左右,我所在公司在开发基于H.323的VoIP电话系统(用了以色列一家公司的库,具体名字忘记了). 去电信科技研究院测试系统,同事发现处理键盘消息总有一些莫名其妙的问题,比如延迟或异常. 我 ...

  4. 后台程序全局钩子获取鼠标滚轮滚动方向(VB6.0)

    全局鼠标键盘HOOK封装:     封装了一个键盘鼠标HOOK类,使用方便(VB6.0) 需要增加的代码: '复制内容到剪贴板 程序代码 Private Type MSLLHOOKSTRUCT     ...

  5. c#使用钩子拦截鼠标键盘事件

    窗体本身带的键盘鼠标事件函数只能响应窗体自己的事件,窗体之外的事件是不会响应的.比如当窗体最小化的时候也响应就要用全局钩子拦截消息来处理了. 大概过程就是在窗体初始化时加载钩子,等待事件消息,事件触发 ...

  6. java hook全局钩子_钩子(hook)

    钩子(hook)编程 一.钩子介绍 1.1钩子的实现机制 钩子英文名叫Hook,是一种截获windows系统中某应用程序或者所有进程的消息的一种技术.下图是windows应用程序传递消息的过程: 如在 ...

  7. 钩子函数-建立键盘鼠标动作记录与回放

    内容:很多的教学软件或系统监视软件可以自动记录回放用户的输入文字或点击按钮等操作操作,这个功能的实现是使用 了windows的hook函数. windows提供api函数setwindowshooke ...

  8. QGraphicsWidget收不到鼠标、键盘消息解决

    问题的提出: 最近利用Graphics View Framework 实现一需求,其中要求鼠标按住QGraphicsWidget实现随意拖动,但调试发现鼠标.键盘的任何消息,QGraphicsWidg ...

  9. Android系统模拟鼠标键盘详解

    转自:http://blog.sina.com.cn/s/blog_602f87700102uz8j.html 在Android系统下模拟鼠标键盘等输入设备,网络上资料非常多.但不少是人云亦云,甚至测 ...

最新文章

  1. 颠覆arXiv等传统论文平台?谷歌大牛强推的Distill进展如何?
  2. react学习(56)--常见HTTP错误
  3. 中国国民休闲状况调查(2020)
  4. Linux系统基础(二)
  5. python 异步io_python异步IO编程(一)
  6. 免费 Python 学习资源大全,你想要都在这里啦(持续更新,欢迎收藏关注点赞加评论哦)
  7. VM安装CentOS6-相关NAT上网VM-tools安装
  8. openGL ES 教程(二):渲染管线
  9. WIN10 PDF不显示缩略图 解决办法(修复工具下载)
  10. 单片机c语言1602怎么接线,lcd1602中文资料分享:lcd1602接线图_lcd1602与单片机连接图 - 全文...
  11. mysql 1032 update_MySQL 1032 主从错误解决方法
  12. android 贴吧列表,Android仿百度贴吧客户端Loading小球
  13. FIN断开-TCP segment of a reassembled PDU-原因分析
  14. 程序员培训班要多少米?报名很贵吗?
  15. android照片批量上传照片,一键批量上传手机照片到QQ相册功能 节省手机流量
  16. 计算机考研国家线好过,考研国家线真的很好过吗?
  17. 荣耀4a鸿蒙,华为 Plan B 揭开面纱:鸿蒙要超越安卓?小米 OPPO 们买单吗?
  18. InnoDB存储引擎:引擎概况
  19. JVM_06 运行时数据区3-方法区
  20. mysql中limit用法_MYSQL中LIMIT用法?

热门文章

  1. idea 社区版 web开发
  2. java中modifier_java中关于.lang.reflect.Modifier.isInterface()方法的实例详解
  3. 盘点程序员逃离一线的Plan B
  4. VR全景拍摄怎么设置相机
  5. apollo github的说明介绍
  6. 初识C语言——冒泡排序法
  7. 目标检测入门知识以思考(写于2021.11)
  8. 查看python openCV的版本号
  9. int类型以及指针的类型所占字节的大小,到底是由什么决定的?
  10. 【转】怎样运行 Vue 打包后的项目