我正在尝试将简单键盘记录器检测到的键盘按下路由到另一个线程。我的程序在这样的线程中设置密钥日志记录:
import threading
import Queue
import pythoncom
import pyHook
stopevent = threading.Event() #how to stop each thread later
q1 = Queue.Queue() #a threading queue for inter proc comms
def OnKeyboardEvent(event):
return event
def thread1(q1,stopevent):
while (not stopevent.is_set()):
print q1.get() #print what key events are registered/pumped
def thread2(q1,stopevent):
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
while (not stopevent.is_set()):
pythoncom.PumpWaitingMessages()
#q1.put(something????)
hm.UnhookKeyboard()
t1 = threading.Thread(target=thread1,args=(q1,stopevent))
t2 = threading.Thread(target=thread2,args=(q1,stopevent))
t1.start()
t2.start()
我正在尝试将钩子捕获的“事件”路由到 q1,然后它将使其可用于 thread1。您会注意到我的代码没有对 q1.put() 进行重要调用。说实话,我编写了“OnKeyboardEvent”函数来返回事件,但我不知道它返回到哪里,或者如何获取它。这是我需要帮助的。我查看了 HookManager() 类定义,没有看到任何我认为可以使用的东西。
对于任何有责任心的程序员来说,这是为了科学,而不是黑客。我正在尝试根据键盘输入来控制跑步机的速度。