En Thu, 12 Mar 2009 07:21:35 -0200, <arn...@sphaero.org> escribió:
I'm not so much involved in any Windows programming however I needed to write a client for the Windows platform. I have this very simple question which I've been unable to answer. I'm listening for keyboard strokes using the pyhook library. I'm doing this in a dedicated thread. The gui just controls the thread. When I want to pause listening for keyboard strokes I wanted to do a PostQuitMessage() to the thread. However this does not work since it either kills the whole app or just does not happen in the thread it's supposed to. I've now made an ugly workaround using PumpWaitingMessages and a delay.
If you have a GUI, then very likely it has its own message loop, so you should not create another.
def run(self): print "Wkeylog run called" # Hook Keyboard self.hm.HookKeyboard() while self.log: win32gui.PumpWaitingMessages() time.sleep(0.02) i can now just cancel the process by setting self.log to False. I wanted to do just: def run(self): print "Wkeylog run called" # Hook Keyboard self.hm.HookKeyboard() win32gui.PumpMessages()
Then, if you remove PumpMesages and PumpWaitingMessages, there is nothing left... so this thread is useless. Perhaps you want to *process* keyboard events in another thread - in this case, use a Queue object to send events to the worker thread, from the main thread where the message loop resides.
-- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list