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 创建弹出式菜单的实现代码
Jul 11 Python
Python数据结构之图的应用示例
May 11 Python
Django项目开发中cookies和session的常用操作分析
Jul 03 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
Python3将数据保存为txt文件的方法
Sep 12 Python
Python协程 yield与协程greenlet简单用法示例
Nov 22 Python
Python实现图片识别加翻译功能
Dec 26 Python
python将图片转base64,实现前端显示
Jan 09 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
什么是python类属性
Jun 10 Python
python os.listdir()乱码解决方案
Jan 31 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 分页类实现代码
2009/12/03 PHP
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
经验几则 推荐
2006/09/05 Javascript
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
django使用LDAP验证的方法示例
2018/12/10 Python
python实现弹跳小球
2019/05/13 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
解决pyecharts在jupyter notebook中使用报错问题
2020/04/23 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
商务主管岗位职责
2013/12/08 职场文书
品质主管岗位职责
2014/03/16 职场文书
销售主管竞聘书
2014/03/31 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
迁徙的鸟观后感
2015/06/09 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
如何利用python实现Simhash算法
2022/06/28 Python