2016-02-09 3 views
1

Я пытаюсь создать простую программу, которая регистрирует все нажатия клавиш, и мне трудно понять, как заставить ее работать. я не могу найти решение этой проблемы в любом месте.Python pyHook возвращает недопустимые символы (поля вместо символов)

Я использую pyHook, чтобы получить мои нажатия клавиш, и я создал функцию OnKeyboardEvent (событие), которая должна принимать событие ascii и преобразовывать его в char, чтобы помещать его в файл, но файл содержит только ящики, или то, что я предполагаю, являются некими недопустимыми символами. После честной отладки я понял, что распечатка самого символа ascii, а не преобразованного символа, все еще выводит странные прямоугольники. Любое понимание того, что происходит, очень ценится.

Эти части важных битов функции OnKeyboardEvent:

def OnKeyboardEvent(event): 

    if event.Ascii == 5: 
     sys.exit(0) 
    if event.Ascii != 0 or 8: 
     f = open(file, 'r+') 
     buffer = f.read() 
     f.close() 

     f = open(file, 'w') 
     keylogs = chr(event.Ascii) 
     print (keylogs) 

Вот та часть, которая перехватывает клавиатуру

hm = pyHook.HookManager() 
hm.KeyDown = OnKeyboardEvent 
hm.HookKeyboard() 

pythoncom.PumpMessages() 

Я бегу для Windows 10 и открыть файл с помощью блокнота если это имеет какое-либо отношение к проблеме

+0

Каково фактическое значение ascii для вывода (прежде чем вы назовете chr() на нем)? –

+0

Я только что попробовал это снова, и, думаю, я ошибся в этом вопросе. Значения ascii на самом деле печатают числа, поэтому это должно означать, что я делаю что-то неправильно с chr() – jacobsskowronek

ответ

-1

Ну, попробуйте event.KeyID вместо event.Ascii. Не уверен, что это лучшее решение, но работает для меня.

Смежные вопросы