我正在创建一个 python 脚本来记录我在系统上按下的键(键盘记录器),并用我的打字习惯的信息打电话回家。我是 python 新手,我正在使用这个应用程序来了解它。我正在使用 python-3.x 和 windows 8
完整的源代码可以在这里找到 https://github.com/funvill/QSMonitor/blob/master/monitor.py
使用这个片段,我可以记录整个系统中的所有按键。问题是当我 [ctrl]+[c] 在另一个窗口中复制某些内容时,python 代码会崩溃。
重现步骤
- 运行 monitor.py 脚本
- 在另一个窗口 (notepad.exe) 中键入几个字母 (abcd)。
- 突出显示记事本中的字母并按住 [ctrl] 并按 [c]
有经验的:
将弹出一条 Windows 错误消息并告诉我 python.exe 已停止运行,需要重新启动。命令窗口中没有 python 错误消息。
def OnKeyboardEvent(event):
global keyDatabase
global keyLoggerCount
keyLoggerCount += 1
# http://code.activestate.com/recipes/553270-using-pyhook-to-block-windows-keys/
print ('MessageName:',event.MessageName )
print ('Message:',event.Message)
print ('Time:',event.Time)
print ('Window:',event.Window)
print ('WindowName:',event.WindowName)
print ('Ascii:', event.Ascii, chr(event.Ascii) )
print ('Key:', event.Key)
print ('KeyID:', event.KeyID)
print ('ScanCode:', event.ScanCode)
print ('Extended:', event.Extended)
print ('Injected:', event.Injected)
print ('Alt', event.Alt)
print ('Transition', event.Transition)
print ('---')
# check to see if this key has ever been pressed before
# if it has not then add it and set its start value to zero.
if event.Key not in keyDatabase:
keyDatabase[ event.Key ] = 0 ;
# Incurment the key value
keyDatabase[ event.Key ] += 1 ;
return True
# When the user presses a key down anywhere on their system
# the hook manager will call OnKeyboardEvent function.
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
while True :
pythoncom.PumpWaitingMessages()
我的问题是:
- 什么可能导致副本和过去崩溃?