Python中使用PyHook监听鼠标和键盘事件实例_python

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
, PyHook
, 监听鼠标事件
监听键盘事件
java键盘监听事件实例、python 键盘监听、python 监听键盘输入、python3监听键盘、python 监听键盘事件,以便于您获取更多的相关知识。

时间: 2024-08-03 08:48:15

Python中使用PyHook监听鼠标和键盘事件实例_python的相关文章

控制台输出-在Eclipse控制台中监听用户的键盘事件

问题描述 在Eclipse控制台中监听用户的键盘事件 最近在用java编写模拟一个人力资源管理系统,是在控制台实现的.其中有某个功能需要用户输入日期.日期是年月日一起输入的,我想在用户输完年份之后,控制台自动为用户打印出一个短横杠帮助用户输入月份.但是前提是用户还没有按下回车.怎样在用户键盘输入的过程中监听到用户目前已经输入几个字符?有没有大神给点建议. 解决方案 http://www.codeweblog.com/%E5%9C%A8javascript%E4%B8%AD%E7%9B%91%E5

Python中解析JSON并同时进行自定义编码处理实例_python

在对文件内容或字符串进行JSON反序列化(deserialize)时,由于原始内容编码问题,可能需要对反序列化后的内容进行编码处理(如将unicode对象转换为str). 在Python中,一种方式是先使用json.load或json.loads反序列化得到dict对象,然后对这个dict对象进行编码处理. 但其实在json.load与json.loads中,有可选参数object_hook.通过使用此参数,可以对反序列化得到的dict直接进行处理,并使用处理后新的dict替代原dict返回.

python中常用的各种数据库操作模块和连接实例_python

工作中,经常会有用python访问各种数据库的需求,比如从oracle读点配置文件或者往mysql写点结果信息之类的.这里列一下可能用到的各个模块. sqlite3: 内置模块用sqlite,有时候确实很方便,我觉得它确实做到了宣称的"零配置".python自2.5版以来,就内置了对sqlite3的支持,使用也非常简单,按照文档上来: 复制代码 代码如下: #打开db文件,获得连接conn = sqlite3.connect('数据文件名')#获得游标c = conn.cursor()

Python中使用wxPython开发的一个简易笔记本程序实例_python

一.简介 wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便的创建完整的.功能键全的GUI用户界面. wxPython是作为优秀的跨平台GUI库wxWidgets的Python封装和Python模块的方式提供给用户的. 二.安装 参考官方网站:http://www.wxpython.org/download.php 三.DEMO 本demo是一个简单的记事本软件,可以打开文件,修改并保存. import wx app = wx.App() win = wx.

Python中字典(dict)和列表(list)的排序方法实例_python

一.对列表(list)进行排序 推荐的排序方式是使用内建的sort()方法,速度最快而且属于稳定排序 复制代码 代码如下: >>> a = [1,9,3,7,2,0,5]>>> a.sort()>>> print a[0, 1, 2, 3, 5, 7, 9]>>> a.sort(reverse=True)>>> print a[9, 7, 5, 3, 2, 1, 0]>>> b = ['e','a'

Python利用pyHook实现监听用户鼠标与键盘事件_python

本文以一段简单的监听鼠标.键盘事件的程序,实现获取用户的输入(比如登录某些网站的账号.密码)的功能.经测试,对于一台"裸奔"的电脑,完全能获取到用户输入的任何信息:但是如果安装了杀毒软件,就够呛了.具体实现方法如下: 一.代码部分:获取用户输入信息,并与截图一起保存到XX目录下 # -*- coding: utf-8 -*- # import pythoncom import pyHook import time import socket from PIL import ImageG

在flex中监听鼠标右键事件,提示 TypeError Error 2007 参数type不能为空。

在flex中监听鼠标右键事件 ,报错,提示 缺少参数. TypeError: Error 2007: 参数 type 不能为空. at flash.events::EventDispatcher/addEventListener() at com.waylau.eagleos.components::DesktopExplorer/service_resultHandler()[D:\workspaceFB47\com.waylau.eagleos_0.9.5\src\com\waylau\ea

c-Windows编程如何监听鼠标是否被一直按下

问题描述 Windows编程如何监听鼠标是否被一直按下 //这个函数用来处理 鼠标和键盘的事件 void OnWindowMessage( HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam ) { switch (message) { case WM_LBUTTONDOWN: MessageBox(NULL, "检测到鼠标事件", "这个是标题", 0); bIsMouseDown = true; break; c

android-java中是不是所有监听接口必有回调click方法,

问题描述 java中是不是所有监听接口必有回调click方法, java中是不是所有监听接口必有回调click方法,为什么click方法不是abstrac修饰的而是public修饰的 解决方案 1.请看源码: public interface OnClickListener { /** * Called when a view has been clicked. * * @param v * The view that was clicked. */ void onClick(View v);