Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】


Posted in Python onSeptember 04, 2018

本文实例讲述了Python实现监控键盘鼠标操作。分享给大家供大家参考,具体如下:

# -*- coding: utf-8 -*-
import pythoncom
import pyHook
import time
def onMouseEvent(event):
  "处理鼠标事件"
  fobj.writelines('-' * 20 + 'MouseEvent Begin' + '-' * 20 + '\n')
  fobj.writelines("Current Time:%s\n" % time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime()))
  fobj.writelines("MessageName:%s\n" % str(event.MessageName))
  fobj.writelines("Message:%d\n" % event.Message)
  fobj.writelines("Time_sec:%d\n" % event.Time)
  fobj.writelines("Window:%s\n" % str(event.Window))
  fobj.writelines("WindowName:%s\n" % str(event.WindowName))
  fobj.writelines("Position:%s\n" % str(event.Position))
  fobj.writelines('-' * 20 + 'MouseEvent End' + '-' * 20 + '\n')
  return True
def onKeyboardEvent(event):
  "处理键盘事件"
  fobj.writelines('-' * 20 + 'Keyboard Begin' + '-' * 20 + '\n')
  fobj.writelines("Current Time:%s\n" % time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime()))
  fobj.writelines("MessageName:%s\n" % str(event.MessageName))
  fobj.writelines("Message:%d\n" % event.Message)
  fobj.writelines("Time:%d\n" % event.Time)
  fobj.writelines("Window:%s\n" % str(event.Window))
  fobj.writelines("WindowName:%s\n" % str(event.WindowName))
  fobj.writelines("Ascii_code: %d\n" % event.Ascii)
  fobj.writelines("Ascii_char:%s\n" % chr(event.Ascii))
  fobj.writelines("Key:%s\n" % str(event.Key))
  fobj.writelines('-' * 20 + 'Keyboard End' + '-' * 20 + '\n')
  return True
#打开日志文件
file_name = "E:\\hook_log.txt"
fobj = open(file_name, 'w')
#创建hook句柄
hm = pyHook.HookManager()
#监控键盘
hm.KeyDown = onKeyboardEvent
hm.HookKeyboard()
#监控鼠标
hm.MouseAll = onMouseEvent
hm.HookMouse()
#循环获取消息
pythoncom.PumpMessages()
#关闭日志文件
fobj.close()

运行后可在E盘根目录下创建一个hook_log.txt文件,用于记录监控键盘、鼠标操作信息。如下图所示:

Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】

注:代码中所用到的pythoncompyHook模块可点击此处下载响应版本的whl文件再进入whl文件目录使用pip install命令进行安装

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
python音频处理用到的操作的示例代码
Oct 27 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
python中partial()基础用法说明
Dec 30 Python
Python格式化字符串f-string概览(小结)
Jun 18 Python
python里 super类的工作原理详解
Jun 19 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
Sep 03 Python
python使用itchat模块给心爱的人每天发天气预报
Nov 25 Python
Python对Tornado请求与响应的数据处理
Feb 12 Python
python实战之一步一步教你绘制小猪佩奇
Apr 22 Python
Python实现简单得递归下降Parser
May 02 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 #Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
Sep 04 #Python
selenium+python实现自动化登录的方法
Sep 04 #Python
python使用scrapy发送post请求的坑
Sep 04 #Python
解决win64 Python下安装PIL出错问题(图解)
Sep 03 #Python
Python全局变量与局部变量区别及用法分析
Sep 03 #Python
Python wxPython库Core组件BoxSizer用法示例
Sep 03 #Python
You might like
关于PHP开发的9条建议
2015/07/27 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
json数据的列循环示例
2013/09/06 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
Three.js基础学习教程
2017/11/16 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
vant实现购物车功能
2020/06/29 Javascript
Python 字符串定义
2009/09/25 Python
Python魔法方法详解
2019/02/13 Python
一篇文章弄懂Python中所有数组数据类型
2019/06/23 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
Python Map 函数的使用
2020/08/28 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
Artist Guitars新西兰:乐器在线商店
2017/09/17 全球购物
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
质量工程师岗位职责
2013/11/16 职场文书
优良学风班申请材料
2014/02/13 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
迎国庆演讲稿
2014/09/05 职场文书
2014年学校工作总结
2014/11/20 职场文书
大学毕业生个人总结
2015/02/28 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers