# # use windll.user32.SetCursorPos(x, y) from ctypes !! # http://kvance.livejournal.com/985732.html # >>> from ctypes import windll # >>> windll.user32.SetCursorPos(0, 0) # # # http://mail.python.org/pipermail/python-win32/2005-April/003131.html from ctypes import * import win32con import win32gui import win32api import time PUL = POINTER(c_ulong) class KeyBdInput(Structure): _fields_ = [("wVk", c_ushort), ("wScan", c_ushort), ("dwFlags", c_ulong), ("time", c_ulong), ("dwExtraInfo", PUL)] class HardwareInput(Structure): _fields_ = [("uMsg", c_ulong), ("wParamL", c_short), ("wParamH", c_ushort)] class MouseInput(Structure): _fields_ = [("dx", c_long), ("dy", c_long), ("mouseData", c_ulong), ("dwFlags", c_ulong), ("time",c_ulong), ("dwExtraInfo", PUL)] class Input_I(Union): _fields_ = [("ki", KeyBdInput), ("mi", MouseInput), ("hi", HardwareInput)] class Input(Structure): _fields_ = [("type", c_ulong), ("ii", Input_I)] def mv(x, y): windll.user32.SetCursorPos(x, y) def xy(): return win32gui.GetCursorPos() def l_click(): # http://www.daniweb.com/forums/post645736.html win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) time.sleep(0.05) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0) if __name__ == '__main__': FInputs = Input * 1 extra = c_ulong(0) ii_ = Input_I() #ii_.ki = KeyBdInput( 0x26, 0x48, 0, 0, pointer(extra) ) ii_.mi = MouseInput(100, 150, 0, win32con.MOUSEEVENTF_MOVE, 0, pointer(extra)) x = FInputs( ( 1, ii_ ) ) print sizeof(x[0]), x[0] print windll.user32.SendInput(1, pointer(x), sizeof(x[0])) print "err",windll.kernel32.GetLastError()