python中使用pyhook实现键盘监控的例子


Posted in Python onJuly 18, 2014

pyhook下载:http://sourceforge.net/projects/pyhook/files/pyhook/1.5.1/

pyhookAPI手册:http://pyhook.sourceforge.net/doc_1.5.0/

以上网站上提供了几个使用的例子,另外安装pyhooks后,也会有一个例子的文件。于是拿来学习了一下,第一次运行时,提示没有pythoncom模块,就安装了pywin32,安装后,可以正常运行,但是会导致机器发卡,特别是中断程序运行后,鼠标会出现一段时间的自由晃动,找了半天原因,感觉主要是事件频率过高,程序会经常卡在pythoncom.PumpMessages()。

网上搜索了半天,看到有一帖子说是pythoncom.PumpMessages(n),n表示延迟时间,于是试着改了下,发现有一定效果,但不明显,后来想是不是因为没有终止程序,才会导致一直很卡呢,于是添加终止程序语句win32api.PostQuitMessage()。结果还算满意。

# -*- coding: cp936 -*-
import pythoncom 
import pyHook 
import time
import win32api
t=''
asciistr=''
keystr=''
def onKeyboardEvent(event):  
  global t,asciistr,keystr
  filename='d://test.txt'
  wrfile=open(filename,'ab')
  "处理键盘事件"
  if t==str(event.WindowName):
    asciistr=asciistr+chr(event.Ascii)
    keystr=keystr+str(event.Key)
    
  else:
    t=str(event.WindowName)
    if asciistr=='' and keystr=='':
      wrfile.writelines("\nWindow:%s\n" % str(event.Window))
      wrfile.writelines("WindowName:%s\n" % str(event.WindowName)) #写入当前窗体名
      wrfile.writelines("MessageName:%s\n" % str(event.MessageName))
      wrfile.writelines("Message:%d\n" % event.Message)
      wrfile.writelines("Time:%s\n" % time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
    else:
      wrfile.writelines("Ascii_char:%s\n" %asciistr)
      wrfile.writelines("Key_char:%s\n" %keystr)
      wrfile.writelines("\nWindow:%s\n" % str(event.Window))
      wrfile.writelines("WindowName:%s\n" % str(event.WindowName)) #写入当前窗体名
      wrfile.writelines("Time:%s\n" % time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
    
    asciistr=chr(event.Ascii)
    keystr=str(event.Key)
  if str(event.Key)=='F12': #按下F12后终止
    wrfile.writelines("Ascii_char:%s\n" %asciistr)
    wrfile.writelines("Key_char:%s\n" %keystr)
    wrfile.close()  
    win32api.PostQuitMessage()
    
  return True
  
  

if __name__ == "__main__":

  #创建hook句柄 
  hm = pyHook.HookManager() 

  #监控键盘 
  hm.KeyDown = onKeyboardEvent 
  hm.HookKeyboard() 

  #循环获取消息 
  pythoncom.PumpMessages(10000)
Python 相关文章推荐
Python中使用urllib2模块编写爬虫的简单上手示例
Jan 20 Python
Python中pygal绘制雷达图代码分享
Dec 07 Python
python PyTorch参数初始化和Finetune
Feb 11 Python
python利用微信公众号实现报警功能
Jun 10 Python
利用python实现AR教程
Nov 20 Python
python实现布隆过滤器及原理解析
Dec 08 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 Python
Python IDLE或shell中切换路径的操作
Mar 09 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
Dec 23 Python
python正则表达式re.match()匹配多个字符方法的实现
Jan 27 Python
一个入门级python爬虫教程详解
Jan 27 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 Python
python使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 #Python
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
Jul 18 #Python
python采集博客中上传的QQ截图文件
Jul 18 #Python
Python下singleton模式的实现方法
Jul 16 #Python
python的迭代器与生成器实例详解
Jul 16 #Python
Python的内存泄漏及gc模块的使用分析
Jul 16 #Python
Python的垃圾回收机制深入分析
Jul 16 #Python
You might like
PHP加密解密函数详解
2015/10/28 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
js removeChild 障眼法 可能出现的错误
2009/10/06 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
babel基本使用详解
2017/02/17 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
vue自定义底部导航栏Tabbar的实现代码
2018/09/03 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
Python中作用域的深入讲解
2018/12/10 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
营销与策划应届生求职信
2013/11/04 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
我的中国梦演讲稿1000字
2014/08/19 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫