C# ile mouse kontrolü

C# ile fare ve klavyeyi kontrol etmek mümkündür.
Yazdığınız bir uygulamada sanki programın başında bir kullanıcı varmış gibi işlem yaptırmak isteyebilirsiniz.
Bu gibi durumlarda klavyede bir tuşa bastırmak yada mouse ile herhangi bi yere tıklatmak isteyebilirsiniz.
Fareyi kontrol edebilmemiz için windows kütüphanesi mevcuttur.

[DllImport("user32.dll")]
static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
private const int MOUSEEVENTF_MOVE = 0x0001;
private const int MOUSEEVENTF_LEFTDOWN = 0x0002;
private const int MOUSEEVENTF_LEFTUP = 0x0004;
private const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
private const int MOUSEEVENTF_RIGHTUP = 0x0010;
private const int MOUSEEVENTF_MIDDLEDOWN = 0x0020;
private const int MOUSEEVENTF_MIDDLEUP = 0x0040;
private const int MOUSEEVENTF_ABSOLUTE = 0x8000;

Yukarıdaki kütüphaneleri uygulamamızda çağırdığımız takdirde artık fareyi kontrol etmek için gerekli fonksiyonları yazabiliriz.

public static void SolTiklama()
{
mouse_event(MOUSEEVENTF_LEFTDOWN, Control.MousePosition.X, Control.MousePosition.Y, 0, 0); //TUŞ_BASMA
mouse_event(MOUSEEVENTF_LEFTUP, Control.MousePosition.X, Control.MousePosition.Y, 0, 0); //TUŞ_BIRAKMA
}
public static void SagTiklama()
{
mouse_event(MOUSEEVENTF_RIGHTDOWN, Control.MousePosition.X, Control.MousePosition.Y, 0, 0); //TUŞ_BASMA
mouse_event(MOUSEEVENTF_RIGHTUP, Control.MousePosition.X, Control.MousePosition.Y, 0, 0); //TUŞ_BIRAKMA
}

Ben yukarıdaki SolTıklama ve SagTıklama isimli iki fonksiyon kullanıyorum.
Aşağıdaki kodlarla mouse pozisyonunu form üzerinde ekli olan panel nesnesinin x ve y koordinatlarına bakarak pozisyonlandırıyorum
ve hemen sonrasında SolTıklama fonksiyonunu çağırarak farenin belirttiğim koordinatlara giderek tıklamasını sağlıyorum.
Eğer form üzerindeki bir nesneye çift tıklamasını istiyorsanız SolTıklama fonksiyonunu bir for döngüsü içerisine alarak iki kere çalıştırabilirsiniz.

Point mp = new Point(panel1.Location.X + 380, panel1.Location.Y + 290);
Cursor.Position = mp;
SolTiklama();

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir