You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

鼠标移动消息疑问及WinAPI模拟Unity MouseDrag事件方法

问题描述

我了解到mouse_event()函数包含MOUSEEVENTF_MOVE参数,发送该指令可移动光标。在画图(Paint)软件中,发送MOUSEEVENTF_LEFTDOWN、MOUSEEVENTF_MOVE和MOUSEEVENTF_LEFTUP这三个指令能实现拖拽操作,且完全正常。

但在一款Unity开发的应用里,MOUSEEVENTF_LEFTDOWN和MOUSEEVENTF_LEFTUP指令可正常生效,MOUSEEVENTF_MOVE也能移动光标,但应用似乎未处理该指令——选中的元素无法移动。

我的疑问:

  • 硬件鼠标移动时,除了MOUSEEVENTF_MOVE,还有哪些可被应用处理的指令/消息?
  • 我知道存在DoDragDrop()函数,这和当前问题有关吗?

补充说明:
这款应用基于Unity开发,我知道Unity有MouseMoveEvent,推测它和MOUSEEVENTF_MOVE相关;另外还有MouseDrag事件,可能该应用正在处理这个事件,但如何通过WinAPI模拟此事件?

代码

在画图中正常工作的代码

def drag_and_drop(
        from_x: int,
        from_y: int,
        to_x: int,
        to_y: int
) -> None:
    to_x = round(to_x * 0xFFFF / (win32api.GetSystemMetrics(win32con.SM_CXSCREEN) - 1))
    to_y = round(to_y * 0xFFFF / (win32api.GetSystemMetrics(win32con.SM_CYSCREEN) - 1))
    win32api.SetCursorPos((from_x, from_y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_MOVE | win32con.MOUSEEVENTF_ABSOLUTE, to_x, to_y)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0)

添加延迟后仍无效的代码

def drag_and_drop(
        from_x: int,
        from_y: int,
        to_x: int,
        to_y: int
) -> None:
    to_x = round(to_x * 0xFFFF / (win32api.GetSystemMetrics(win32con.SM_CXSCREEN) - 1))
    to_y = round(to_y * 0xFFFF / (win32api.GetSystemMetrics(win32con.SM_CYSCREEN) - 1))
    win32api.SetCursorPos((from_x, from_y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)
    time.sleep(.5)
    win32api.mouse_event(win32con.MOUSEEVENTF_MOVE | win32con.MOUSEEVENTF_ABSOLUTE, to_x, to_y)
    time.sleep(1)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0)

PyAutoGUI实现(MacOS正常,Windows无效)

def drag_and_drop(
    from_x: int,
    from_y: int,
    to_x: int,
    to_y: int
) -> None:
    pyautogui.moveTo((from_x, from_y))
    time.sleep(1)
    pyautogui.dragTo((to_x, to_y), duration=2, button='left')

内容的提问来源于stack exchange,提问作者Aurelien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:55:31