看手工耿突发奇想,自己是否也能搞个有意义的脑残程序,于是想到自己能否也统计一下自己敲击键盘的内容?其实一直都有这个想法,今天终于实现这个小心思。网上搜了下已经有别人做过了。于是乎,借鉴了一些别人的程序,然后进行改造。最终大功告成。
task is cheap,
全部代码如下,可以直接复制粘贴跑起来:
# coding:utf-8
import datetime
import pyHook
import pythoncom
from time import *
result = ''
# 一个字典存取所有键值和按键的次数。
keyDict = {}
strDate = datetime.datetime.now().strftime('%y-%m-%d')
print(strDate)
def onMouseEvent(event):
# 监听鼠标
# 需要注意的是返回True,以便将事件传给其他的处理程序,如果返回False的话,鼠标事件在这里就会被拦截,即鼠标会僵在此处失去响应
return True
def onKeyboardEvent(event):
# 监听键盘事件
# 同鼠标事件监听函数的返回值
# 写一个保存到本地文件的方法,而且应该以写二进制的方式来写入,设置result为全局的,避免文件被覆盖
global result
# 以每天的日期为文件名称。
file = open(r'D:/{}.txt'.format(strDate), 'wb')
key = str(event.Key)
result = result + "Time : " + str(asctime())+"|:"+"WindowName:"+str( event.WindowName)+"|"+"Key:"+key+"|"+"MessageName:"+str( event.MessageName)
if key not in keyDict:
keyDict[key] = 1
else:
keyDict[key] = keyDict[key]+1
file.writelines(result)
if event.Key == "Escape":
file.close()
print('统计结果是 {}'.format(keyDict))
exit("统计结束!")
return True
def main():
# 设置为全局变量,以便存取按键及次数
global keyDict
# 创建一个:钩子“管理对象
hm = pyHook.HookManager()
# 监听所有的键盘事件
hm.KeyDown = onKeyboardEvent
#设置键盘”钩子“
hm.HookKeyboard()
# 监听鼠标事件
hm.mouseAll = onMouseEvent
# 设置鼠标钩子
hm.HookMouse()
# 进入循环侦听,需要手动进行关闭,否则程序将一直处于监听的状态。可以直接设置而空而使用默认值
pythoncom.PumpMessages()
if __name__ == "__main__":
main()
python 文件名.py
按Esc键会自动退出程序。
结果如下:
计结果是 {'A': 1, 'D': 1, 'F': 1, 'S': 9, 'Lshift': 1, 'Escape': 1}
统计结束!
可以看到S键敲击了9次,A键敲击了1次。 Esc键按了1次。
Over