开发者社区> 小五义> 正文

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)



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
一个案例带你了解独立式键盘设计原理
一个案例带你了解独立式键盘设计原理
6 0
面向键盘操作的半自动化解决方案
面向键盘操作的半自动化解决方案
108 0
推荐一个好玩的鼠标和键盘使用情况统计软件,完全免费
推荐一个好玩的鼠标和键盘使用情况统计软件,完全免费
154 0
万能脚本录制工具VIP版本(支持鼠标/键盘 前台/后台按键 支持模式更多更强大)
前言:鉴于很多朋友没有编程基础,无法自己制作脚本。本人编写了一款集录制脚本与执行脚本于一体的程序,并调用了大漠插件免费版本。使没有编程基础的同学也能制作自己的脚本。并引起了很多朋友的喜爱。并希望兼容更多的绑定模式。
4594 0
+关注
小五义
长年从事网络安全、智能硬件安全及开发等相关工作,曾在国内核心期刊、Freebuf网站发表文章二十余篇,在博客园的博客排名前1000名。
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载