Python中使用PyHook监听鼠标和键盘事件实例


Posted in Python onJuly 18, 2014

PyHook是一个基于Python的“钩子”库,主要用于监听当前电脑上鼠标和键盘的事件。这个库依赖于另一个Python库PyWin32,如同名字所显示的,PyWin32只能运行在Windows平台,所以PyHook也只能运行在Windows平台。

关于PyHook的使用,在它的官方主页上就有一个简单的教程,大体上来说,可以这样使用

# -*- coding: utf-8 -*- # 
 3import pythoncom 
 4import pyHook  
 5def onMouseEvent(event): 
  
  # 监听鼠标事件   
  print "MessageName:",event.MessageName   
  print "Message:", event.Message   
  print "Time:", event.Time   
  print "Window:", event.Window   
  print "WindowName:", event.WindowName   
  print "Position:", event.Position   
  print "Wheel:", event.Wheel   
  print "Injected:", event.Injected      
  print"---"
 
  # 返回 True 以便将事件传给其它处理程序   
  # 注意,这儿如果返回 False ,则鼠标事件将被全部拦截   
  # 也就是说你的鼠标看起来会僵在那儿,似乎失去响应了   
  return True
 
23def onKeyboardEvent(event):
 # 监听键盘事件   
  print "MessageName:", event.MessageName   
  print "Message:", event.Message   
  print "Time:", event.Time   
  print "Window:", event.Window   
  print "WindowName:", event.WindowName   
  print "Ascii:", event.Ascii, chr(event.Ascii)   
  print "Key:", event.Key   
  print "KeyID:", event.KeyID   
  print "ScanCode:", event.ScanCode   
  print "Extended:", event.Extended   
  print "Injected:", event.Injected   
  print "Alt", event.Alt   
  print "Transition", event.Transition   
  print "---"   
  # 同鼠标事件监听函数的返回值   
  return True 

42def main():   
  # 创建一个“钩子”管理对象   
  hm = pyHook.HookManager()   
  # 监听所有键盘事件   
  hm.KeyDown = onKeyboardEvent   
  # 设置键盘“钩子”   
  hm.HookKeyboard()   
  # 监听所有鼠标事件   
  hm.MouseAll = onMouseEvent   
  # 设置鼠标“钩子”   
  hm.HookMouse()   
  # 进入循环,如不手动关闭,程序将一直处于监听状态   
  pythoncom.PumpMessages() 

56if __name__ == "__main__":   
  main()

运行上面的脚本,试试看移动一下鼠标,或者按一下键盘(比如开一个记事本程序,随便写点东西),看看这个脚本输出了什么。你会发现,你的鼠标、键盘的每一个动作都被它捕捉到并打印出来了。

另外,需要注意上面两个监听函数的返回值。这两个函数可以没有返回值(实际上返回的是 None),如果有返回值的话,如果返回值为 True,则这个脚本在捕捉、处理对应的事件后会把事件继续传递下去,如果返回值为 False,则事件将会被阻塞在这儿,具体来说,就是你的鼠标或键盘将不再有响应。

有了 PyHook,我们可以做很多有趣的事情:比如记录一下自己一天鼠标的轨迹,再结合别的程序画一张图出来;或者记录一下你每天的按键记录,看看键盘上哪些 键你按得最多;如果你很坏,还可以把它悄悄地装在别人的电脑中,看一看那个人一天都做了些什么;当然,由于 PyHook 还可以取得当前窗口的标题(WindowName),你还可以记录下来一天之中你在各个程序上花费了多少时间,看看自己有多少时间在看网页、多少时间在聊 天、多少时间在真正地工作,呵呵。

Python 相关文章推荐
简单掌握Python的Collections模块中counter结构的用法
Jul 07 Python
Python中matplotlib中文乱码解决办法
May 12 Python
python操作excel文件并输出txt文件的实例
Jul 10 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 Python
Python中矩阵创建和矩阵运算方法
Aug 04 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
Django发送邮件和itsdangerous模块的配合使用解析
Aug 10 Python
Python OrderedDict的使用案例解析
Oct 25 Python
详解Python中pyautogui库的最全使用方法
Apr 01 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
Python3交互式shell ipython3安装及使用详解
Jul 11 Python
Django项目如何正确配置日志(logging)
Apr 29 Python
python中使用pyhook实现键盘监控的例子
Jul 18 #Python
python使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 #Python
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
Jul 18 #Python
python采集博客中上传的QQ截图文件
Jul 18 #Python
Python下singleton模式的实现方法
Jul 16 #Python
python的迭代器与生成器实例详解
Jul 16 #Python
Python的内存泄漏及gc模块的使用分析
Jul 16 #Python
You might like
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
2015/05/12 PHP
Yii2单元测试用法示例
2016/11/12 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
超强的IE背景图片闪烁(抖动)的解决办法
2007/09/09 Javascript
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
jQuery实现的AJAX简单弹出层效果代码
2015/11/26 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
vue项目实战总结篇
2018/02/11 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
2019/05/20 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Python使用pyautocad+openpyxl处理cad文件示例
2019/07/11 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
python3.8下载及安装步骤详解
2020/01/15 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
python 发送get请求接口详解
2020/11/17 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
计算机工程学院个人求职信
2013/10/05 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
原告代理词范文
2015/05/25 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书