Имитация движения мыши и кликов в C#

Эта программа использует функцию API mouse_event для имитации движения мыши и моделирования щелчка мыши.

Обработчик события Paint программы рисует круги вокруг целевой точки, чтобы вы могли видеть, где она находится.

// Целевое местоположение мыши.
private Point m_Target = new Point(200, 150);

// Нарисуем цель.
private void Form1_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
    for (int i = 5; i <= 20; i += 5)
    {
        e.Graphics.DrawEllipse(Pens.Red,
            m_Target.X - i - 1, m_Target.Y - i - 1, 2 * i, 2 * i);
    }
}

Когда вы нажимаете мышью на форме, следующий код рисует X, на который вы нажали.

// Нарисуем X, на который пользователь нажал.
private void Form1_Click(object sender, EventArgs e)
{
    // Получить позицию мыши.
    Point pt = MousePosition;

    // Преобразование в экранные координаты.
    pt = this.PointToClient(pt);

    using (Graphics gr = this.CreateGraphics())
    {
        gr.SmoothingMode = SmoothingMode.AntiAlias;
        gr.DrawLine(Pens.Blue,
            pt.X - 5, pt.Y - 5, pt.X + 5, pt.Y + 5);
        gr.DrawLine(Pens.Blue,
            pt.X + 5, pt.Y - 5, pt.X - 5, pt.Y + 5);
    }
}

Когда вы нажимаете Move & amp; Нажмите кнопку, программа выполнит следующий код.

// Переместите мышь и щелкните по ней.
private void btnMoveClick_Click(object sender, EventArgs e)
{
    // Преобразование цели в абсолютные координаты экрана.
    Point pt = this.PointToScreen(m_Target);

    // mouse_event перемещается в системе координат, где
    // (0, 0) находится в верхнем левом углу и
    // (65535,65535) находится в нижнем правом углу.
    // Преобразование координат.
    Rectangle screen_bounds = Screen.GetBounds(pt);
    uint x = (uint)(pt.X * 65535 / screen_bounds.Width);
    uint y = (uint)(pt.Y * 65535 / screen_bounds.Height);

    // Переместите мышь.
    mouse_event(
        (uint)(MouseEventFlags.ABSOLUTE | MouseEventFlags.MOVE),
        x, y, 0, 0);

    // Нажмите там.
    mouse_event(
        (uint)(MouseEventFlags.ABSOLUTE | MouseEventFlags.MOVE |
            MouseEventFlags.LEFTDOWN | MouseEventFlags.LEFTUP),
        x, y, 0, 0);
}

Сначала код преобразует координаты целевой точки из координат формы в координаты экрана. Затем он преобразует результат в специальную систему координат мыши, которая работает от 0 до 65535 в направлениях X и Y.

Затем программа использует функцию API mouse_event, чтобы переместить мышь в целевую позицию и щелкнуть мышью. Поскольку это моделирует нормальное событие щелчка мыши, обработчик события Click формы выполняет и рисует X в целевой точке.

Источник: http://csharphelper.com/blog/2016/10/simulatemouse-movement-and-clicks-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector