为了账号安全,请及时绑定邮箱和手机立即绑定

你如何模拟鼠标点击C#?

你如何模拟鼠标点击C#?

收到一只叮咚 2019-06-29 18:06:35
你如何模拟鼠标点击C#?你如何模拟鼠标点击C#?
查看完整描述

3 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

我已经组合了几个来源来生成下面的代码,我目前正在使用这些代码。我还删除了Windows.Forms引用,这样我就可以从控制台和WPF应用程序中使用它,而不需要额外的引用。

using System;using System.Runtime.InteropServices;public class MouseOperations{
    [Flags]
    public enum MouseEventFlags
    {
        LeftDown = 0x00000002,
        LeftUp = 0x00000004,
        MiddleDown = 0x00000020,
        MiddleUp = 0x00000040,
        Move = 0x00000001,
        Absolute = 0x00008000,
        RightDown = 0x00000008,
        RightUp = 0x00000010
    }

    [DllImport("user32.dll", EntryPoint = "SetCursorPos")]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool SetCursorPos(int x, int y);      

    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool GetCursorPos(out MousePoint lpMousePoint);

    [DllImport("user32.dll")]
    private static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);

    public static void SetCursorPosition(int x, int y) 
    {
        SetCursorPos(x, y);
    }

    public static void SetCursorPosition(MousePoint point)
    {
        SetCursorPos(point.X, point.Y);
    }

    public static MousePoint GetCursorPosition()
    {
        MousePoint currentMousePoint;
        var gotPoint = GetCursorPos(out currentMousePoint);
        if (!gotPoint) { currentMousePoint = new MousePoint(0, 0); }
        return currentMousePoint;
    }

    public static void MouseEvent(MouseEventFlags value)
    {
        MousePoint position = GetCursorPosition();

        mouse_event            ((int)value,
             position.X,
             position.Y,
             0,
             0)
            ;
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct MousePoint
    {
        public int X;
        public int Y;

        public MousePoint(int x, int y)
        {
            X = x;
            Y = y;
        }
    }}


查看完整回答
反对 回复 2019-06-29
?
慕少森

TA贡献2019条经验 获得超9个赞

有些控件,如System.Windows.Forms中的Button,有一个“PerformClick”方法来执行此操作。


查看完整回答
反对 回复 2019-06-29
  • 3 回答
  • 0 关注
  • 1677 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信