Имитация движения мыши и кликов в 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 в целевой точке.
