文章目录

  • 1.情况说明
  • 2.windows下hook技术
  • 3.钩子回调的参数分析
  • 4.代码

1.情况说明

  • 首先平台是windows平台
  • 目的:监控鼠标的点击事件、鼠标的位置、键盘的点击事件
  • 背景:在做一个远程控制的软件,所有要监控记录本地的键鼠消息,到时候是要发送给其它主机的。
  • c++

2.windows下hook技术

  • windows下提供了一个SetWindowsHookEx挂钩,提供一个UnhookWindowsHookEx去钩子。
  • SetWindowsHookEx
HHOOK SetWindowsHookEx(          int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId
);

idHook: 要安装的钩子类型。这边使用WH_MOUSE_LLWH_KEYBOARD_LL,为啥使用这2个?因为这2个挂全局钩子,不需要写一个dll,方便,但可能会有小问题。
lpfn: hook回调函数,有固定要求,如下:
typedef LRESULT (CALLBACK* HOOKPROC)(int code, WPARAM wParam, LPARAM lParam);,所以一般自己这样定义:
LRESULT WINAPI MyMouseCallback(int nCode, WPARAM wParam, LPARAM lParam); //callback declaration
或者LRESULT CALLBACK MyMouseCallback(int nCode, WPARAM wParam, LPARAM lParam); //callback declaration
hMod: 钩子回调所在的模块的实例,这里在本程序,为NULL。
**dwThreadId:**要钩住的线程的id,全局钩子为0.

  • 要了解更详细的参数说明,请查询MSDN,比如要了解WH_MOUSE类型的全局钩子怎么写
  • 全局钩子需要消息循环,所以程序里要写上消息循环模块。
  • 程序结束下钩子,免得浪费系统资源。

3.钩子回调的参数分析

  • 鼠标
LRESULT WINAPI MyMouseCallback(int nCode, WPARAM wParam, LPARAM lParam)

nCode: 为0,说明后2个参数携带信息。
wParam: 消息类型,比如WM_LBUTTONUP
lParam: mouse的回调是个MSLLHOOKSTRUCT结构体,keyboard的回调是一个KBDLLHOOKSTRUCT结构体。

4.代码

  • 运行截图如下,代码在gayhub,链接

使用全局鼠标键盘钩子,监控鼠标键盘事件相关推荐

  1. WPF 利用键盘钩子来捕获键盘,做一些不为人知的事情...完整实例

    原文:WPF 利用键盘钩子来捕获键盘,做一些不为人知的事情...完整实例 键盘钩子是一种可以监控键盘操作的指令. 看到这句话是不是觉得其实键盘钩子可以做很多事情. 场景 当你的程序需要一个全局的快捷键 ...

  2. python 键盘钩子_WPF 利用键盘钩子来捕获键盘,做一些不为人知的事情...完整实例...

    原文:WPF 利用键盘钩子来捕获键盘,做一些不为人知的事情...完整实例 键盘钩子是一种可以监控键盘操作的指令. 看到这句话是不是觉得其实键盘钩子可以做很多事情. 场景 当你的程序需要一个全局的快捷键 ...

  3. 利用键盘钩子捕获Windows键盘动作

    引言 在科研生产中对研制.调试操作的记录是非常有必要而且是有很重要价值的.通过对记录信息的分析,可以在事故发生后准确的分析出事故的起因.操作是否存在失误等许多重要线索.通常需要记录的信息是多种多样的, ...

  4. java键盘钩子_java – JNA键盘钩在Windows

    我已经在 Windows中安装了一个JNA代码来安装键盘钩子(使用JNA示例).代码编译和一切,我得到挂钩安装(我成功处理挂钩),我也可以卸载挂钩成功.但是,当我按键盘上的任何键时,回调永远不会被调用 ...

  5. html 监控键盘,后台监控鼠标和键盘(可监听全局的鼠标以及键盘按键)

    资源下载此资源下载价格为3D币,请先登录 资源文件列表 MouseKeyboardLibrary/MouseKeyboardLibrary/app.config , 134 MouseKeyboard ...

  6. 如何让你的程序避开全局键盘钩子的监视

    原文地址:http://blog.okbase.net/BlueSky/archive/3839.html 一直以来有个疑问,就是如果别人在你的电脑上安装了键盘钩子来监视你的键盘按键动作,我的程序怎么 ...

  7. 钩子原理及实例:实现键盘钩子截获密码

    钩子原理及实例:利用鼠标键盘钩子截获密码 钩子原理 钩子能截获系统并得理发送给其它应用程序的消息,能完成一般程序无法完成的功能.Windows系统是建立在事件驱动的机制上的,也就是整个系统都是通过消息 ...

  8. [C++]键盘钩子程序

    实现适时监视键盘,并将按键信息保存在TXT文件中的程序 Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的.而钩子是Windows系统中非常重要的系统接口,用它 ...

  9. 一个简单的键盘钩子程序(ZZZ)

    一个简单的键盘钩子程序 从哪儿抄来的忘了,不过写的很简单明了 实现适时监视键盘,并将按键信息保存在TXT文件中的程序         Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都 ...

  10. 要如何禁止键盘钩子?

    要如何禁止键盘钩子? Delphi / Windows SDK/API http://www.delphi2007.net/DelphiAPI/html/delphi_2006112612072216 ...

最新文章

  1. 陆奇“入驻” YC,开启新征程
  2. php动态网站开发报告,PHP动态网站开发pdf
  3. 设计模式学习----装饰器模式
  4. 卸载Internet Explorer 7 Beta 2 Preview引起原来的IE无法正常使用
  5. 【分享】一套非常简单的企业即时通讯
  6. 三、Java面向对象编程有四个特征
  7. PyTorch官方教程中文版
  8. CentOS 7安装 MySQL 8 数据库
  9. 多个kinect标定,颜色和深度的标定
  10. DPlayer开发弹幕后台
  11. 五、eclipse如何创建一个ftl(FreeMarker)的文件和设置ftl文件的显示风格(ftl文件高亮显示)
  12. 【转贴】常识普及:广府人是越佬族
  13. hdu6638 Snowy Smile(线段树+最大子段和)
  14. 官方示例(十):网页开发3D粒子系统实现降雨效果 ThingJS
  15. Android分享文件到qq没反应,Android 微信,qq分享文件
  16. linux 查看文件夹大小及文件大小
  17. ubuntu空间扩容
  18. Timer 定时器相关类
  19. Android平板如何玩windows,高手教你如何使用安卓平板远程控制PC电脑
  20. 基于DQN与gym的小车爬坡训练

热门文章

  1. 电磁学学习三__通量、散度、旋度
  2. 爬虫第一课——教你学会使用requests库
  3. Python中用户界面设计(GUI)
  4. TPLINK路由 无线MAC地址过滤设置
  5. 【Apple Studio Display】-苹果5K显示器黑屏问题处理
  6. 奇梦达何以“贱卖”西安研发中心
  7. 项目经理不懂带人就自己累到死
  8. Qt滚动区域原理(QAbstractScrollArea)
  9. CST中建立石墨烯材料
  10. Python3 解决编码问题: `UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 10: ille