python自动化脚本pyautogui点击失效,pyautogui.click()失效

背景:在Pycharm里,使用python+pyautogui编写的自动化脚本,当用pyautogui进行鼠标点击时,发现点击失效。

解决方法:运行Pycharm或者其他ide的时候选择以管理员权限启动即可。

打开pycharm以后最上方的效果:
在这里插入图片描述

但是!!!有可能还是没效果(不确定是不是游戏等界面做了限制)

那么怎么办呢

使用pip3 install pywin32 

pip3 install pypiwin32

代码如下:

import time
import win32api
import win32con
# import win32gui
# import ctypes


# 模拟鼠标指针, 传送到指定坐标
# win32api.SetCursorPos([900, 300])
# 模拟鼠标点击
def left_mouse_click():
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    time.sleep(0.05)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    time.sleep(0.05)

# 键盘扫描码
MapVirtualKey = ctypes.windll.user32.MapVirtualKeyA
# 模拟输入字母a
def key_down_and_up(num=0x41):  # 0x41是a
    # win32api.keybd_event(虚拟码,扫描码(游戏必填),按下与抬起的标识,0)
    win32api.keybd_event(num, MapVirtualKey(num, 0), 0, 0)
    time.sleep(0.02)
    win32api.keybd_event(num, MapVirtualKey(num, 0), win32con.KEYEVENTF_KEYUP, 0)

def my_click(x=None, y=None, press_time=0.0):
    if x is None or y is None:
        win32api.SetCursorPos(pyautogui.position())
    else:
        win32api.SetCursorPos([x, y])
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    time.sleep(0.05)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
    time.sleep(0.05)

当你使用`pyautogui.click()`进行鼠标点击操作时,如果窗口的位置发生了变化,这可能是因为以下几个原因: 1. **窗口移动**:在程序运行过程中,如果用户手动移动了窗口,那么窗口的新位置自然会影响鼠标点击的位置。 2. **自动调整**:某些应用程序有窗口自动调整功能,比如最小化到任务栏后恢复或改变大小/位置。 3. **窗口重绘**:当窗口被其他事件(如窗口焦点、消息循环)打断并重新绘制时,它的坐标可能会更新。 4. **鼠标捕获**:如果你的代码设置了鼠标捕获,那鼠标移动可能会影响到默认的行为。 5. **屏幕坐标系**:确保你在`click`函数调用时使用的坐标是相对于屏幕的,而不是窗口的,因为`pyautogui`默认使用的是屏幕坐标。 为了解决这个问题,你可以尝试以下措施: - **获取当前窗口**:在点击前先确定要操作的窗口,可以使用`pygetwindow.getWindowsWithTitle()`等函数获取。 - **锁定鼠标**:如果担心窗口位置变化影响,可以在点击之前设置鼠标不响应外部输入(`pyautogui.moveTo(0, 0, duration=0)`),操作完成后恢复。 - **校准坐标**:根据窗口的位置信息动态调整你要点击的坐标。 ```python from pygetwindow import getWindowsWithTitle # 获取指定标题的窗口 target_window = getWindowsWithTitle('Your Window Title')[0] target_window.left, target_window.top # 获取窗口左上角坐标 # 根据窗口位置计算正确点击点 correct_click_pos = (target_window.left + desired_x_offset, target_window.top + desired_y_offset) pyautogui.click(correct_click_pos) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值