以上⽹站上提供了⼏个使⽤的例⼦,另外安装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)
因篇幅问题不能全部显示,请点此查看更多更全内容