PythonWin, python thread and PostQuitMessage?
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Thu Mar 12 13:43:19 EDT 2009
En Thu, 12 Mar 2009 07:21:35 -0200, <arnaud at 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
More information about the Python-list
mailing list