Symulacja kliknięcia myszką

Zagadnienie: Chcemy by w określone miejsca na ekranie zasymulować kliknięcie myszką
Rozwiązanie Na początku dodajemy dyrektywę z obszarem typów

using System.Threading;

W celu oprogramowanie klikania myszką w wybrane miejsce musimy dorzucić do programu następującą funkcję:

[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool SetCursorPos(int x, int y);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
public const int MOUSEEVENTF_LEFTDOWN = 0x02;
public const int MOUSEEVENTF_LEFTUP = 0x04;
//This simulates a left mouse click
public static void LeftMouseClick(int xpos, int ypos)
{
SetCursorPos(xpos, ypos);
mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0);
}

Następnie w metodzie Load dla forma dodajemy:

private void Form1_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
Thread.Sleep(1000);
System.Windows.Forms.Cursor.Position = new Point(960, 430);
LeftMouseClick(960, 430);
Thread.Sleep(3000);
System.Windows.Forms.Cursor.Position = new Point(960, 530);
LeftMouseClick(960, 530);
Thread.Sleep(3000);
System.Windows.Forms.Cursor.Position = new Point(1100, 600);
LeftMouseClick(1100, 600);
System.Windows.Forms.Application.Exit();
}

Powyższy kod minimalizuje forma. Po tym przenosi kursor wpierw na pozycję 960,430 i klika, następnie na 960,530 i klika i na koniec na 1100,600 i klika. Po wszystkim aplikacja wyłącza się.

Tags: