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中的装饰器详解
Apr 13 Python
Python连接数据库学习之DB-API详解
Feb 07 Python
Python常见异常分类与处理方法
Jun 04 Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
python实现烟花小程序
Jan 30 Python
python 一个figure上显示多个图像的实例
Jul 08 Python
python for循环remove同一个list过程解析
Aug 14 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
python使用pandas抽样训练数据中某个类别实例
Feb 28 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
python3.7+selenium模拟淘宝登录功能的实现
May 26 Python
一篇文章弄懂Python中的内建函数
Aug 07 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+AJAX实现投票功能的方法
2015/09/28 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
2019/08/02 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
vue vant中picker组件的使用
2020/11/03 Javascript
python中sleep函数用法实例分析
2015/04/29 Python
Python中import机制详解
2017/11/14 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
python中format()函数的简单使用教程
2018/03/14 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
解决Django连接db遇到的问题
2019/08/29 Python
python实现的汉诺塔算法示例
2019/10/23 Python
python根据文本生成词云图代码实例
2019/11/15 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
墨西哥购物网站:Elektra
2020/01/21 全球购物
大学生团日活动总结
2015/05/06 职场文书
安全教育第一课观后感
2015/06/17 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
vue实现拖拽交换位置
2022/04/07 Vue.js
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang