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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    从外部访问 Template (模板)的控件、获取它的属性值
    继续聊WPF——动态数据模板
    WPF数据模板样式选择器
    深入理解正则表达式
    nssm使用,安装服务、删除服务
    Windows删除某服务
    nssm设置solr开机启动服务
    Windows下直接双击可执行的jar
    Unsupported major.minor version 52.0——解决
    js延迟2秒执行事件
  • 原文地址:https://www.cnblogs.com/xiohao/p/10407548.html
Copyright © 2011-2022 走看看