import sys
import win32api, win32con
import pyHook
import pythoncom
def CursorLeft():
win32api.mouse_event(win32con.MOUSEEVENTF_MOVE, -1, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0)
def Quit():
print "Quitting"
sys.exit()
# create a keyboard hook
def OnKeyboardEvent(event):
print 'MessageName:', event.MessageName
print 'Key:', event.Key
if event.Key in ['Numpad2']:
CursorLeft()
elif event.Key in ['End']:
Quit()
return True
def OnMouseEvent(event):
print 'Position:', event.Position
return True
hm = pyHook.HookManager()
hm.MouseAll = OnMouseEvent
hm.HookMouse()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
pythoncom.PumpMessages()
The function CursorLeft works fine every other time. It also works fine without any negative numbers as parameters. I am completely lost as to why this is happening!
First call, fine.
Second call,
TypeError: an integer is required
Third call, fine.
Fourth call,
TypeError: an integer is required.
so on and so on.
win32api.mouse_event(win32con.MOUSEEVENTF_MOVE, -1, 0, 0, 0)
The last two parameters passed allow the function to behave properly. I am still not sure as to why and would still like to know but at least it is working now.
return True
Very important that the event functions return true.
Copying the answer from the comments in order to remove this question from the "Unanswered" filter:
return True
Very important that the event functions return true.
~ answer per Junkah
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With