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 相关文章推荐
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
Python采用Django开发自己的博客系统
Sep 29 Python
Python简单的制作图片验证码实例
May 31 Python
Python内置函数delattr的具体用法
Nov 23 Python
python调用百度语音REST API
Aug 30 Python
Flask框架学习笔记之消息提示与异常处理操作详解
Aug 15 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
Python with标签使用方法解析
Jan 17 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 Python
python2和python3哪个使用率高
Jun 23 Python
python 爬取吉首大学网站成绩单
Jun 02 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 类相关函数的使用详解
2013/05/10 PHP
php实现的漂亮分页方法
2014/04/17 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
jquery 插件学习(六)
2012/08/06 Javascript
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
基于JS判断对象是否是数组
2020/01/10 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
Python实现的石头剪子布代码分享
2014/08/22 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
python实现pdf转换成word/txt纯文本文件
2018/06/07 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
优秀大学生推荐信范文
2013/11/28 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
开会通知
2015/04/20 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python
vue使用watch监听属性变化
2022/04/30 Vue.js