我试图让鼠标缓慢地穿过屏幕,但找不到减慢鼠标速度的方法。有人在 11 个月前发布了一个问题的解决方案,但他们发布的解决方案对我不起作用,或者我使用了错误的方法。
可能的解决方案:如何使用win32api(mouseeventf_move)更改鼠标移动速度
def farm():
#win32api.SetCursorPos((0,1440))
win32api.mou0se_event(win32con.MOUSEEVENTF_MOVE, int(100) * 2, int(100) * 2, 0, 0)
time.sleep(0.5)
win32api.mouse_event(win32con.MOUSEEVENTF_MOVE, int(1) * 5, int(3) * 7, 0, 0)
#win32api.SetCursorPos((2560,1000))
到目前为止,我已经尝试了上面代码片段中的代码。未注释的代码是我在另一篇文章中尝试使用的尝试解决方案。这会将鼠标沿前两个数字(乘以平滑因子)的 x 和 y 方向移动。我还没有找到用这种方法减慢速度的方法。如果有一种方法可以在使用 SetCursorPos 时做到这一点,那就太好了,但如果没有,我可以理解为什么。
编辑:删除了图像并添加了一个片段,不知道不上传图像是我的错。
我做了很多挖掘,不幸的是,我找不到让 win32api 工作的方法。
我建议使用 pyautogui 而不是 win32api。 Pyautogui 是一个 GUI 自动化模块,可以控制鼠标和键盘,还可以使用 Pillow 在屏幕上查找图像并截取屏幕截图。
Pyautogui 具有
moveTo()
和 move()
功能,可以解决您的问题。例如:
import pyautogui
def farm():
pyautogui.moveTo(100, 100, duration=2) #moves to (100, 100) in 2 secs
#or if you just want to move the mouse, without specifying a position:
pyautogui.move(None, 10, duration=2) #moves 10 pixels in 2 secs
只需调整持续时间参数即可控制鼠标移动所需的时间。我已经使用 pyautogui 一段时间了,事实证明它非常有用。我从 https://pypi.org/PyAutoGUI/ 获得此信息,您可以在其中找到完整文档的链接。
如果 pyautogui 不适合你,那么我建议查看 pynput,并且有很多关于它的 stackoverflow 帖子(我没有使用 pynput 的经验)。