> Date: Mon, 23 Jan 2012 08:24:41 -0500
> From: d...@davea.name
> To: neruy...@hotmail.com
> CC: python-list@python.org
> Subject: Re: PyHook to catch mouse events
> 
> On 01/23/2012 07:06 AM, Neru Yume wrote:
> > Using PyHook to record mouse events, one has to add quite a few lines to 
> > set up a hook, and as far as I have experienced, if one uses time.sleep() 
> > or some other function that spends some time doing something, the program 
> > freezes my computer completely while doing this (the cursor starts moving 
> > slowly, and so on).
> >
> >
> > Also: Ctrl+c does not work, I have to click the cross to exit the program, 
> > which is horrible when combined with the freezing mentioned earlier.
> >
> >
> > Is there a way to avoid the program freezing up? Using the win32api 
> > somehow, rather than PyHook? (I only know how to generate input with 
> > win32api, not catch output).
> >
> >
> > import pythoncom, pyHook
> > class record(object):
> >      def OnMouseEvent(self, event):
> >          print 'MessageName:',event.MessageName
> >          print 'Message:',event.Message
> >          print 'Time:',event.Time
> >          print 'Window:',event.Window
> >          print 'WindowName:',event.WindowName
> >          print 'Position:',event.Position
> >          print 'Wheel:',event.Wheel
> >          print 'Injected:',event.Injected
> >          print '---'
> > #time.sleep(1) #If I uncomment this, running the program will freeze stuff, 
> > as mentioned earlier.
> >          return True
> >
> > recordit = record()
> > hm = pyHook.HookManager()
> > hm.MouseAll = recordit.OnMouseEvent
> > hm.HookMouse()
> > pythoncom.PumpMessages()
> >
> This is the nature of event-driven systems.  When you hook into the 
> Windows system, you're expected to carve your event handlers into 
> something quick.  For normal Python gui programming, breaking the rule 
> will only affect your own program.  Pyhook just does the same thing on a 
> system-wide scale.
> 
> 
> Are you sure you need global events at all?
> 
> If you want to do useful work in response to particular global mouse 
> events, you'll have to arrange to get control some other way.  Normally 
> this is done by posting pseudo-events in your process's message queue, 
> so you'll get control again, and can continue working on the problem.  I 
> don't know the specific details for pyhook, since I don't run Windows 
> any more, and pyhook is not part of Python itself.
> 
> 
> -- 
> 
> DaveA
> 



I do need global events, yes - I am not using any particular GUIs at the moment 
but rather trying to record mouse paths (not limited to one window).


Not very familiar with message queues of processes. 
                                          
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to