我为键盘记录器创建了一个线程,该线程与另一个产生一些声音的线程并行记录(我想捕捉反应时间)。
不幸的是,尽管我调用了 killKey() 并且打印了“invoked killkey()”,但线程从未完成。
我总是从这个线程中得到一个 thread.isActive() = true 。
class KeyHandler(threading.Thread):
hm = pyHook.HookManager()
def __init__(self):
threading.Thread.__init__(self)
def OnKeyboardCharEvent(self,event):
print 'Key:', event.Key
if event.Key=='E':
...
return True
def killKey(self):
KeyHandler.hm.UnhookKeyboard()
ctypes.windll.user32.PostQuitMessage(0)
print "invoked killkey()"
def run(self):
print "keyHandlerstartetrunning"
KeyHandler.hm.KeyDown = self.OnKeyboardCharEvent
KeyHandler.hm.HookKeyboard()
#print "keyboardhooked"
pythoncom.PumpMessages()
更准确地说, ctypes.windll.user32.PostQuitMessage(0) 什么都不做
我倾向于在这个线程中调用 killKey() 和相应的 ctypes.windll.user32.PostQuitMessage(0) 的外部超时。