zoukankan      html  css  js  c++  java
  • python32模拟鼠标和键盘操作

    前言
    Windows pywin32允许你像vc一样的形式来使用python开发win32应用。代码风格可以类似win32 sdk,也可以类似MFC,由你选择。如果你仍不放弃vc一样的代码过程在python下,这不错的选择。

    利用pywin32可以自动化进行电脑操作。包括复制粘贴,鼠标移动,键盘输入等等。

    下载链接

    一、pywin32常用函数
    (1)获取鼠标位置
    win32api.GetCursorPos()
    1
    (2)鼠标左键按下
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    1
    (3)鼠标左键放开
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    1
    (4)鼠标右键按下
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    1
    (5)鼠标右键放开
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    1
    (6)设置鼠标位置
    win32api.SetCursorPos((x, y))
    1
    (7)键盘输入事件
    win32api.keybd_event(VK_CODE[word], 0, 0, 0)
    win32api.keybd_event(VK_CODE[word], 0, win32con.KEYEVENTF_KEYUP, 0)
    1
    2
    二、封装接口
    (1)获取当前鼠标位置
    def cursor_point(self):
    """
    获取当前鼠标位置
    """
    pos = win32api.GetCursorPos()
    return int(pos[0]), int(pos[1])
    1
    2
    3
    4
    5
    6
    (2)鼠标左击事件
    def mouse_left_click(self, new_x=None, new_y=None, times=1):
    """
    鼠标左击事件
    :param new_x: 新移动的坐标x轴坐标
    :param new_y: 新移动的坐标y轴坐标1506240215
    :param times: 点击次数
    """
    self.mouse_move(new_x, new_y)
    time.sleep(0.05)
    while times:
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    times -= 1
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    (3)鼠标右击事件
    def mouse_right_click(self, new_x=None, new_y=None):
    """
    鼠标右击事件
    :param new_x: 新移动的坐标x轴坐标
    :param new_y: 新移动的坐标y轴坐标
    """
    self.mouse_move(new_x, new_y)
    time.sleep(0.05)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    (4)移动鼠标位置
    def mouse_move(self, new_x, new_y):
    if new_y is not None and new_x is not None:
    point = (new_x, new_y)
    win32api.SetCursorPos(point)
    self.x = new_x
    self.y = new_y
    1
    2
    3
    4
    5
    6
    (5)键盘输入文本
    def key_input(self, input_words=''):
    for word in input_words:
    win32api.keybd_event(VK_CODE[word], 0, 0, 0)
    win32api.keybd_event(VK_CODE[word], 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(0.1)
    1
    2
    3
    4
    5
    (6)键盘输入事件
    def key_even(self, input_key):
    win32api.keybd_event(VK_CODE[input_key], 0, 0, 0)
    win32api.keybd_event(VK_CODE[input_key], 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)
    1
    2
    3
    4
    三、代码仓库
    ---------------------
    作者:毕宿
    来源:CSDN
    原文:https://blog.csdn.net/qq_33371343/article/details/78916751
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    java selenium (九) 常见web UI 元素操作 及API使用
    java selenium (六) XPath 定位
    java selenium (八) Selenium IDE 用法
    java selenium (五) 元素定位大全
    一个使用CSocket类的网络通信实例
    揭开链接器的面纱(中)
    揭开连接器的面纱(上)
    深入理解程序的结构
    调试利器GDB(下)
    调试利器GDB(上)
  • 原文地址:https://www.cnblogs.com/xiohao/p/10407548.html
Copyright © 2011-2022 走看看