如何在X,Y坐标处设置鼠标光标,单击鼠标左键,向左,向右,向上,向下滚动

时间:2015-06-26 02:05:58

标签: c#

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

由于

解决方案:floatas,再次感谢回复这篇文章。我花了昨天和今天试图解决这个问题,我终于开始工作了。我会发布我的代码,希望这有助于其他人。

1 个答案:

答案 0 :(得分:1)

首先,您需要导入一些功能。

更改光标位置:

   [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);