相位猛冲 发表于 2024-1-20 11:20

Python 模拟用户操作鼠标

传入坐标x、y直接调用就行了


import pyautogui,win32gui

鼠标_单击_模拟用户(坐标x,坐标y)

def 鼠标_单击_模拟用户(x, y, 窗口句柄=None, action=1):
    ' 模拟用户点击鼠标\n\n 窗口句柄可以不填 action=1表示左键单击,action=2表示双击'
    original_pos = pyautogui.position()
    try:
      if 窗口句柄:
            try:
                win32gui.SetForegroundWindow(窗口句柄)
            except Exception as e:
                print(f"无法设置窗口句柄({窗口句柄})为前台窗口:", e)
                return False

            x_screen, y_screen = win32gui.ClientToScreen(窗口句柄, (x, y))
            print(f"客户区坐标转屏幕坐标:({x}, {y}) -> ({x_screen}, {y_screen})")

      # 映射鼠标操作
      operations = {
            1: lambda: pyautogui.click(x_screen, y_screen),
            2: lambda: pyautogui.doubleClick(x_screen, y_screen),
            3: lambda: pyautogui.mouseDown(x=x_screen, y=y_screen, button='left'),
            4: lambda: pyautogui.mouseUp(x=x_screen, y=y_screen, button='left')
      }

      # 获取对应的鼠标操作
      operation = operations.get(action)
      if not operation:
            print(f"无效的鼠标操作: {action}")
            return False

      # 执行对应的鼠标操作
      operation()
      print(f"执行了鼠标操作: {action} 在 ({x_screen}, {y_screen})")

    except Exception as e:
      print("无法执行鼠标操作,出现异常:", e)
      return False
    finally:
      # 恢复鼠标位置
      pyautogui.moveTo(*original_pos)

    return True

Chenanin 发表于 2024-1-20 17:45

P3terJ 发表于 2024-1-20 16:56
函数使用了中文??

python3.x版本就支持中文变量了,但是有可能在使用第三方库或者接口的时候出现莫名奇妙的问题

chayunyuxiang 发表于 2024-1-20 12:40

坐个一楼

y72463700 发表于 2024-1-20 15:20

坐个二楼

losingstars 发表于 2024-1-20 16:22

这代码能运行?

P3terJ 发表于 2024-1-20 16:56

本帖最后由 P3terJ 于 2024-1-20 16:58 编辑

函数使用了中文??

wikiyc 发表于 2024-1-20 17:35

这个方法我还真不用,学习了。

raindrop00 发表于 2024-1-20 17:39

感谢分享,学习了

JOJO2 发表于 2024-1-20 20:54

感谢楼主的分享。

sai609 发表于 2024-1-21 10:03

中文还是先行转译为English
页: [1] 2
查看完整版本: Python 模拟用户操作鼠标