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学习资料
Feb 08 Python
python练习程序批量修改文件名
Jan 16 Python
python连接MySQL数据库实例分析
May 12 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
Apr 13 Python
Python使用回溯法子集树模板解决迷宫问题示例
Sep 01 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
python实现多线程网页下载器
Apr 15 Python
Python lambda表达式用法实例分析
Dec 25 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
Feb 15 Python
Python实现朴素贝叶斯的学习与分类过程解析
Aug 24 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
浅析python中特殊文件和特殊函数
Feb 24 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
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
使用dump函数,给php加断点测试
2013/06/25 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
PHP实现文件下载详解
2014/11/27 PHP
ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
第四章之BootStrap表单与图片
2016/04/25 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
Python随机函数random()使用方法小结
2018/04/29 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
基于python的列表list和集合set操作
2019/11/24 Python
PyTorch中反卷积的用法详解
2019/12/30 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
中专毕业生自荐信范文
2013/11/28 职场文书
财务会计实习报告体会
2013/12/20 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
个人欠条范本
2015/07/03 职场文书
高一英语教学反思
2016/03/03 职场文书
民事纠纷协议书
2016/03/23 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
设置IIS Express并发数
2022/07/07 Servers