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从网络读取图片并直接进行处理的方法
May 22 Python
简单总结Python中序列与字典的相同和不同之处
Jan 19 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
Nov 29 Python
Python判断三段线能否构成三角形的代码
Apr 12 Python
结束运行python的方法
Jun 16 Python
详解Python 中的容器 collections
Aug 17 Python
Python3如何使用tabulate打印数据
Sep 25 Python
如何在Python中创建二叉树
Mar 30 Python
python numpy中multiply与*及matul 的区别说明
May 26 Python
python中tkinter复选框使用操作
Nov 11 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 图片水印类代码
2012/08/27 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
为你总结一些php信息函数
2015/10/21 PHP
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
RequireJs的使用详解
2017/02/19 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
python使用cookielib库示例分享
2014/03/03 Python
python的dict,set,list,tuple应用详解
2014/07/24 Python
python在非root权限下的安装方法
2018/01/23 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
Python中包的用法及安装
2020/02/11 Python
python学习笔记之多进程
2020/08/06 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
Python通过format函数格式化显示值
2020/10/17 Python
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
施华洛世奇韩国官网:SWAROVSKI韩国
2018/06/05 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
生产内勤岗位职责
2013/12/07 职场文书
公积金单位接收函
2014/01/11 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
什么样的创业计划书可行性高?
2014/02/01 职场文书
语文教学感言
2014/02/06 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书