24小时热门版块排行榜    

查看: 578  |  回复: 1

mybag1

木虫 (正式写手)

[交流] pyhooks实现键盘监控学习心得 已有1人参与

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)
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

http://www.cnblogs.com/xiaowuyi
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cenwanglai

荣誉版主 (知名作家)

老和山猥琐派九段

优秀版主


小木虫: 金币+0.5, 给个红包,谢谢回帖
请问键盘监控是做什么用的?
2楼2012-04-23 15:01:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 mybag1 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 买卖文章的刷屏了! +3 能丫 2026-06-13 3/150 2026-06-14 09:20 by bobvan
[找工作] *囍 +4 m584r2z4j3 2026-06-12 4/200 2026-06-14 09:06 by 8bmv3h4hvh
[公派出国] T^T +6 q1zg6x4lf3 2026-06-12 6/300 2026-06-14 08:28 by 8bmv3h4hvh
[考博] →_→ +4 q1zg6x4lf3 2026-06-12 4/200 2026-06-14 08:28 by 8bmv3h4hvh
[硕博家园] O(∩_∩)O +6 jk31rb6vyz 2026-06-12 8/400 2026-06-14 08:10 by 8bmv3h4hvh
[考博] T^T +4 m584r2z4j3 2026-06-11 4/200 2026-06-14 08:08 by 8bmv3h4hvh
[公派出国] π_π +5 m584r2z4j3 2026-06-11 5/250 2026-06-14 08:08 by 8bmv3h4hvh
[基金申请] 函评 +3 布布和一二 2026-06-13 3/150 2026-06-13 23:35 by 芋圆香飘飘
[找工作] 售SCI文章,我:8.O.5.51O.5.4,科目齐全,可十急 +3 q1zg6x4lf3 2026-06-12 3/150 2026-06-13 19:07 by 1js5n6upxm
[公派出国] +4 q1zg6x4lf3 2026-06-12 4/200 2026-06-13 19:05 by 1js5n6upxm
[考研] T^T +6 m584r2z4j3 2026-06-11 6/300 2026-06-13 18:29 by lkmi35jdzt
[考研] o>_<o +5 m584r2z4j3 2026-06-11 5/250 2026-06-13 18:22 by lkmi35jdzt
[考博] T^T +4 jk31rb6vyz 2026-06-12 4/200 2026-06-13 12:09 by 80j16ujcu8
[找工作] 售SCI文章,我:8.O.5.51O.5.4,科目齐全,可十急 +4 q1zg6x4lf3 2026-06-12 4/200 2026-06-13 08:53 by t4hz8376wy
[论文投稿] →_→ +5 m584r2z4j3 2026-06-11 5/250 2026-06-13 08:13 by t4hz8376wy
[基金申请] 面上项目没有好文章就没希望了吗? +19 1234567wang 2026-06-07 21/1050 2026-06-12 21:24 by littlezl
[考博] [急招]吉林大学招收26年9月入学考核制博士生1名,截止今晚24点前 +3 hehejin 2026-06-10 4/200 2026-06-12 18:24 by 冻雨天
[教师之家] AASSDDFF +3 m584r2z4j3 2026-06-11 3/150 2026-06-12 11:28 by zs48m4lz8g
[考博] 还有课题组有博士名额吗 +5 冻雨天 2026-06-07 6/300 2026-06-08 20:59 by RCS_tyro
[考博] 博士申请 +3 张城斐 2026-06-07 3/150 2026-06-08 09:15 by A大朋同学
信息提示
请填处理意见