ctypes mouse_events

ctypes mouse_events,第1张

ctypes mouse_events

我有一个包装鼠标管理的小类。

import win32gui, win32api, win32con, ctypesclass Mouse:    """It simulates the mouse"""    MOUSEEVENTF_MOVE = 0x0001 # mouse move     MOUSEEVENTF_LEFTDOWN = 0x0002 # left button down     MOUSEEVENTF_LEFTUP = 0x0004 # left button up     MOUSEEVENTF_RIGHTDOWN = 0x0008 # right button down     MOUSEEVENTF_RIGHTUP = 0x0010 # right button up     MOUSEEVENTF_MIDDLEDOWN = 0x0020 # middle button down     MOUSEEVENTF_MIDDLEUP = 0x0040 # middle button up     MOUSEEVENTF_WHEEL = 0x0800 # wheel button rolled     MOUSEEVENTF_ABSOLUTE = 0x8000 # absolute move     SM_CXSCREEN = 0    SM_CYSCREEN = 1    def _do_event(self, flags, x_pos, y_pos, data, extra_info):        """generate a mouse event"""        x_calc = 65536 * x_pos / ctypes.windll.user32.GetSystemMetrics(self.SM_CXSCREEN) + 1        y_calc = 65536 * y_pos / ctypes.windll.user32.GetSystemMetrics(self.SM_CYSCREEN) + 1        return ctypes.windll.user32.mouse_event(flags, x_calc, y_calc, data, extra_info)    def _get_button_value(self, button_name, button_up=False):        """convert the name of the button into the corresponding value"""        buttons = 0        if button_name.find("right") >= 0: buttons = self.MOUSEEVENTF_RIGHTDOWN        if button_name.find("left") >= 0: buttons = buttons + self.MOUSEEVENTF_LEFTDOWN        if button_name.find("middle") >= 0: buttons = buttons + self.MOUSEEVENTF_MIDDLEDOWN        if button_up: buttons = buttons << 1        return buttons    def move_mouse(self, pos):        """move the mouse to the specified coordinates"""        (x, y) = pos        old_pos = self.get_position()        x =  x if (x != -1) else old_pos[0]        y =  y if (y != -1) else old_pos[1] self._do_event(self.MOUSEEVENTF_MOVE + self.MOUSEEVENTF_ABSOLUTE, x, y, 0, 0)    def press_button(self, pos=(-1, -1), button_name="left", button_up=False):        """push a button of the mouse"""        self.move_mouse(pos)        self._do_event(self.get_button_value(button_name, button_up), 0, 0, 0, 0)    def click(self, pos=(-1, -1), button_name= "left"):        """Click at the specified placed"""        self.move_mouse(pos)        self._do_event(self._get_button_value(button_name, False)+self._get_button_value(button_name, True), 0, 0, 0, 0)    def double_click (self, pos=(-1, -1), button_name="left"):        """Double click at the specifed placed"""        for i in xrange(2):  self.click(pos, button_name)    def get_position(self):        """get mouse position"""        return win32api.GetCursorPos()

这是一个小例子

import timemouse = Mouse()mouse.click((20, 10), "left")time.sleep(2.0)mouse.click((100, 100), "right")

希望对您有所帮助



欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5673517.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存