我正在尝试制作一个简单的程序来记录所有击键,但我很难弄清楚如何让它工作。我似乎无法在任何地方找到这个问题的解决方案。
我正在使用 pyHook 来获取击键,并且创建了一个名为 OnKeyboardEvent(event) 的函数,该函数应该获取事件 ascii 并将其转换为 char 以便将其放入文件中,但该文件仅包含框,或者我认为是某种无效字符。经过相当多的调试后,我发现打印 ascii 字符本身而不是转换后的 char 仍然会输出奇怪的框。非常感谢任何有关正在发生的事情的见解。
这些是 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)
这是 Hook 键盘的部分
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
pythoncom.PumpMessages()
我正在运行 Windows 10 并使用记事本打开该文件(如果这与问题有关)
最佳答案
好吧,尝试使用 event.KeyID
而不是 event.Ascii
。不确定这是否是最好的解决方案,但对我有用。
关于Python pyHook 返回无效字符(框而不是字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35283535/