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

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

 # -*- coding: utf-8 -*-
#
# by oldj
# http://oldj.net/
# import pythoncom
import pyHook def 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 def 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 def main():
# 创建一个“钩子”管理对象
hm = pyHook.HookManager() # 监听所有键盘事件
hm.KeyDown = onKeyboardEvent
# 设置键盘“钩子”
hm.HookKeyboard() # 监听所有鼠标事件
hm.MouseAll = onMouseEvent
# 设置鼠标“钩子”
hm.HookMouse() # 进入循环,如不手动关闭,程序将一直处于监听状态
pythoncom.PumpMessages() if __name__ == "__main__":
main()

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

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

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

用Python监听鼠标和键盘事件的更多相关文章

  1. 50-用Python监听鼠标和键盘事件

    转自:https://www.cnblogs.com/qiernonstop/p/3654021.html 用Python监听鼠标和键盘事件 PyHook是一个基于Python的“钩子”库,主要用于监 ...

  2. python监听鼠标和键盘

    import PyHook3 def OnMouseEvent(event): print('MessageName:',event.MessageName) print('Message:',eve ...

  3. PC监听鼠标和键盘事件,定时无响应退出

    直接上代码: window.onload = function () { initScreenSaver(); } //0912 add function ScreenSaver(settings){ ...

  4. vue使用element-ui的el-input监听不了键盘事件解决

    vue使用element-ui的el-input监听不了键盘事件,原因应该是element-ui自身封装了一层div在input标签外面,把原来的事件隐藏了,所以如下代码运行是无响应的: <el ...

  5. 使用pynput同时监听鼠标和键盘

    pynput概述 pynput是一个基于python的,能够监听和控制鼠标和键盘的第三方库. pynput主要包括两个类,pynput.mouse和pynput.keyboard,顾名思义,前者可以用 ...

  6. Python自动化学习--鼠标和键盘事件

    from selenium import webdriver from selenium.webdriver import ActionChains import time driver = webd ...

  7. 关于如何用Jquery监听鼠标滚轮改变横向滚动条

    $(function(){ if ((navigator.userAgent.indexOf('MSIE') >= 0)){/*判断是否是IE浏览器*/ var scroll_width = 1 ...

  8. 使用python监听、模拟鼠标键盘事件

    最近守望职业选手疑似开挂事件挺热闹的,在下小菜一枚,并不能从视频中看出端倪.看了一些关于外挂的讨论,自动点射和压枪只需在鼠标驱动上做些改动即可,自瞄或其他高级功能则需要读内存或修改游戏文件,检测也更容 ...

  9. Python——pyHook监听鼠标键盘事件

    pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...

随机推荐

  1. VsCode 使用习惯设置(备份)

    { "window.menuBarVisibility": "toggle", "workbench.statusBar.visible": ...

  2. unity "[ ]"标签

    [CanEditMultipleObjects]//可多对象编辑 public class Collider2DEditor:Editor {} [SerializeField]//序列化私有属性 p ...

  3. 简单全局HOOK拦截大部分键盘消息

    前言:学习HOOK中,万一老师讲解HOOK入门教程:http://www.cnblogs.com/del/category/124150.html http://www.cnblogs.com/del ...

  4. HttpURLConnection 添加代理

    //创建代理服务器 Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("www.proxyaddress.com& ...

  5. 16.0 Auth0注册与设置

    首先呢?注册https://manage.auth0.com 填写回调网页,意思是当我们点sign in 那个按钮的时候 会访问这个官网 这个官网又回调下面的网页,不然会报错.这个网站因为我们是开发所 ...

  6. C#图像处理:Stream 与 byte[] 相互转换,byte[]与string,Stream 与 File 相互转换等

    C# Stream 和 byte[] 之间的转换 一. 二进制转换成图片 MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Ima ...

  7. C# windows服务:如何获取服务程序所在的文件夹

    AppDomain.CurrentDomain.BaseDirectory 就这么一句话

  8. 关于ros将opencv版本固定“写死”的一些想法

    今天主要工作是将ros和zed结合起来,但是发现自己安装了opencv3.1,ros indigo安装的是opencv2.4.8,这就麻烦了,zed支持的是opencv3.1.一开始使用slam2时, ...

  9. js正则表达式子校验

    //正则表达式校验new RegExp(/^[1-9]\d{4,8}$/,"g").test(1234);//执行一个字符串所表达的方法 eval(this['字符串']) 正则表 ...

  10. windows下配置pymysql

    可以直接pip安装 pip install pyMysql