Pyautogui 无法在 Roblox 中正确移动鼠标

问题描述 投票:0回答:4

我正在用 Python 编写代码来帮助我在 Roblox 游戏中完成某些任务。我不会讲太多细节,但基本上,目标是自动单击屏幕上的某些点。为了尝试完成此任务,我使用 pyautogui.click()。因此,例如,如果我需要单击的点是 (300, 500),我会执行 pyautogui.click(300, 500)

在 Roblox 之外,pyautogui 工作得很好。但是,每当我打开 Roblox 并使用命令时,它就无法正常工作。因此,假设鼠标从 (0, 0) 开始,我在 (300, 500) 处激活单击。当发生这种情况时,鼠标光标不会移动,并且单击发生在鼠标原来所在的 (0, 0) 处。然而,只要我稍微移动实际鼠标,鼠标光标就会传送回它应该在的位置 (300, 500)。

这使得我无法执行我想要的操作,因为我希望程序能够在某些位置单击,而无需移动实际的物理鼠标。有谁知道我如何使用 python 来正确移动鼠标?

python mouse roblox
4个回答
0
投票

你必须使用 win32api 和 win32con 来移动和单击鼠标,因为 pyautogui 有时很慢,所以我使用 win32api 来代替。

这是我使用的代码。

from pyautogui import *
import pyautogui
import time
import win32api, win32con

def click(x,y):
    win32api.SetCursorPos((x,y)) 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
    time.sleep(0.1) #uses time api, to simulate normal input.
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)

0
投票

你必须使用 pyautoit 才能使其在 roblox 中工作,我使用 autoit.mouse_click("left",x, y) 使鼠标移动到屏幕中的 x 和 y 位置,然后单击左键或右键。


0
投票

是的,我也遇到了同样的问题,所以我改用了 AHK(自动热键)。我认为(不知道后台发生了什么)python 发出的 win32 api 调用没有使用深层方法,因为你必须下载并授予 AHK 权限才能实现这一点。所以 Roblox 可能已经找到了一种检测物理输入的方法,尽管他们仍然无法检测 AHK 进行的深度 api 调用


0
投票

pyautogui + directinput 适用于来自 MS 商店的 roblox,win32 gui 适用于旧版 roblox(Web 浏览器启动)

© www.soinside.com 2019 - 2024. All rights reserved.