我创建了一个控制鼠标的 Python 脚本。我使用了三个不同的库,pynput、pyautogui 和 py32win(直接使用 winapis)。这三个都无法在 Windows 应用程序上执行拖动操作。
我已经尝试过 Microsoft Paint 和 Microsoft Photos,并且可以让鼠标分别来回拖动缩放滑块或来回旋转图像滑块。
我自己研究了这个问题,到目前为止我的理解是有一些安全层阻止模拟鼠标拖动被发送到应用程序的任何事件处理程序。但是我迷失在如何解决问题的杂草中。
奇怪的是,鼠标点击有效,但与此同时,任何应该发生的鼠标悬停状态也不会注册。
是否有安全且直接的解决方法?我希望能够在 Windows 应用程序上自动执行例程。拖动在 Web 浏览器窗口中工作正常,但当它是 Windows 应用程序时,它不起作用。
谢谢!! 方法一:
pyautogui.dragTo(x, y)
方法二:
pyautogui.mouseDown(x, y)
pyautogui.moveTo(x, y)
pyautogui.mouseUp(x, y)
都没有用。我也使用 Winapi 做了同样的事情。这也没有用。
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, win32api.GetCursorPos()[0], win32api.GetCursorPos()[1], win32con.VK_LBUTTON, 0)
win32api.SetCursorPos((x, y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, win32api.GetCursorPos()[0], win32api.GetCursorPos()[1], win32con.VK_LBUTTON, 0)
以下使用 Pyautogui 的内置 dragTo 的示例对我来说很实用:
import pyautogui
# Move the mouse to the starting position
pyautogui.moveTo(100, 100)
# Drag the mouse to the ending position
pyautogui.dragTo(200, 200, duration=1.5)
...但是如果出于某种奇怪的原因只单击鼠标并移动它对你有用,你可以看看这个例子是否有效:
import pyautogui
# Move the mouse to the starting position
pyautogui.moveTo(100, 100)
# Click and hold the left mouse button
pyautogui.mouseDown()
# Drag the mouse to the ending position
pyautogui.moveTo(200, 200, duration=1.5)
# Release the left mouse button
pyautogui.mouseUp()