如何将鼠标光标设置在X、Y坐标,单击鼠标左键并向左、向右、顶部、底部滚动



如标题所述,我一直在尝试使用Cursor.Position = new Point(58, 128);来搜索设置鼠标坐标的方法。然后,在按住鼠标左键(向下)的同时,我试图滚动到另一个方向(随机方向)。例如,如果我进入谷歌地球并将光标位置设置为0,0,那么光标将在地图上滚动。如果有人能帮忙,我一定会很感激。

感谢

解决方案:floatas,再次感谢您对这篇文章的回复。我花了昨天和今天的时间试图弄清楚这一点,我终于成功了。我将发布我的代码,希望这能帮助其他人。

首先需要导入一些函数。

更改光标位置:

   [DllImport("user32.dll", EntryPoint = "SetCursorPos")]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool SetCursorPos(
        [In] int X,
        [In] int Y);

模拟鼠标事件:

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(
    [In] uint dwFlags,
    [In] uint dx,
    [In] uint dy,
    [In] int dwData,
    [In] uint dwExtraInfo);

可能的鼠标事件:

public enum MouseEvents
{
    MOUSEEVENTF_LEFTDOWN = 0x02,
    MOUSEEVENTF_LEFTUP = 0x04,
    MOUSEEVENTF_RIGHTDOWN = 0x08,
    MOUSEEVENTF_RIGHTUP = 0x10,
    MOUSEEVENTF_WHEEL = 0x0800,
}

您可以向下和向上发送鼠标,模拟点击:

mouse_event((uint)MouseEvents.MOUSEEVENTF_LEFTDOWN | (uint)MouseEvents.MOUSEEVENTF_LEFTUP, X, Y, 0, 0);

没有测试这个,但应该按下鼠标,拖动并释放:

mouse_event((uint)MouseEvents.MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);
SetCursorPos((int)X+10, (int)Y+10);
mouse_event((uint)MouseEvents.MOUSEEVENTF_LEFTUP, X+10, Y+10, 0, 0);