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继承和抽象类的实现方法
Jan 14 Python
Python爬虫DOTA排行榜爬取实例(分享)
Jun 13 Python
python 通过xml获取测试节点和属性的实例
Mar 31 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
May 30 Python
python3 实现验证码图片切割的方法
Dec 07 Python
Python父目录、子目录的相互调用方法
Feb 16 Python
Python学习笔记之变量、自定义函数用法示例
May 28 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
使用Python的turtle模块画国旗
Sep 24 Python
flask 实现token机制的示例代码
Nov 07 Python
使用Python进行防病毒免杀解析
Dec 13 Python
Python字符串格式化f-string多种功能实现
May 07 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新手上路(十一)
2006/10/09 PHP
PHP开发需要注意的安全问题
2010/09/01 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
基于OL2实现百度地图ABCD marker的效果
2015/10/01 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
2017/11/16 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
python根据url地址下载小文件的实例
2018/12/18 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
美国手机支架公司:PopSockets
2019/11/27 全球购物
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
公证委托书大全
2014/04/04 职场文书
初中学习计划书范文
2014/09/15 职场文书
2014年路政工作总结
2014/12/10 职场文书
业务员辞职信范文
2015/03/02 职场文书
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers