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中一些自然语言工具的使用的入门教程
Apr 13 Python
用python爬取租房网站信息的代码
Dec 14 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
python中with用法讲解
Feb 07 Python
python交互模式基础知识点学习
Jun 18 Python
详解Python 最短匹配模式
Jul 29 Python
python3 kubernetes api的使用示例
Jan 12 Python
Pycharm 设置默认解释器路径和编码格式的操作
Feb 05 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 Python
理解python中装饰器的作用
Jul 21 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
php addslashes和mysql_real_escape_string
2010/01/24 PHP
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
详解JavaScript时间格式化
2015/12/23 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
Python爬豆瓣电影实例
2018/02/23 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
iPython pylab模式启动方式
2020/04/24 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
大学同学十年聚会感言
2014/02/21 职场文书
歌唱比赛主持词
2014/03/18 职场文书
毕业生就业协议书
2014/04/11 职场文书
工资收入证明
2014/10/07 职场文书
Python+Appium新手教程
2021/04/17 Python
Python破解极验滑动验证码详细步骤
2021/05/21 Python
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
Python的三个重要函数详解
2022/01/18 Python
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js