C# (CSharp) ile Fare Kontrolü - API Kullanarak -
Herkese merhaba bu yazıda sizlere C# ile fare kontrolü yapmayı anlatacağım. Bu yazıdan sonra fareyi istediğimiz noktaya hareket ettireceğiz ve istediğimiz kadar tıklattıracağız.Bu işlem için Windows apilerini kullanacağız ve sisteme ASCII karşılığı olan Hex kodları göndererek işlemimizi yapacağız. Şimdi isterseniz işlemlerimize başlayalım.
using System.Runtime.InteropServices;
kütüphanesini isim uzayına eklememiz gerekmektedir.
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
//Yukarıda kullanacak olduğumuz DLL dosyasınısisteme entegre ettik
public static extern void fare_kontrolu(Int32 dwFlags, Int32 dx, Int32 dy, Int32 cButtons, Int32 dwExtraInfo);
//Yukarıdaki kodda ise fareyi istediğimiz noktqaya götürüp istediğimiz işlemi yapmamızı sağlıyoruz
private const int sol_bas= 0x02;
private const int sol_kaldir= 0x04;
private const int sag_bas= 0x08;
private const int sag_kaldir= 0x10;
//Burda ise fare yönetim dll komutuna göndereceğim değişkenleri ayarlıyorum.
//Bunun amacı karıştırmamak yani sürekli hex kodları yazmak yerine bildiğim tanımladığım değerleri yazmak için böyle Define yaptım.
Dikkatinizi çekerim biz göndereceğimiz komutları HexaDecimal türünden tanıumladık. Çünkü DLL dosyası ASCII kodlarından anlar ve bunlarda özünde ASCII kodlarıdır.
Şimdide gelelim faremizi hareket ettirmeye ve sağ sol tıklatmaya... Aşağıda fareyi sağ tıklatma kodları var
private void SagTikla()
{
//Farenin ekrandakix ekseni konumu olacak
int farenin_x_konumu = Cursor.Position.X;
//Farenin ekrandaki y eksen koordinatı olacak
int farenin_y_konumu = Cursor.Position.Y;
fare_kontrolu(sag_bas | sag_kaldir, farenin_x_konumu, farenin_y_konumu, 0, 0);
/*
sag_bas : yukarıda tanımladığımız hex değerini gönderiyruz
sag_kaldir : yine aynı şekilde ukarıdaki hex değerini gönderiyoruz
ardından farenin konumlarını gönderiyoruz
ve ardında gerekli olmayan komutları gönderiyoruz ve faremiz istediğimiz yere tıklıyor
*/
}
Evet yukarıdaki fonksiyondanda anlaşılacağı üzere faremize tıklama için gerekli koordinatları ve tıklanacak tuşları veriyoruz o ayarladığımız koordinatlara gidiyor ve tıklıyor Şimdi birde Sol tıklama işlemine bakalım...
private void SolTikla()
{
int farenin_x_konumu = Cursor.Position.X;
int farenin_y_konumu = Cursor.Position.Y;
// Yine aynı şekilde farenin tıklayacağı konumları ayarlıyoruz
fare_kontrolu(sol_bas | sol_kaldir, farenin_x_konumu, farenin_y_konumu, 0, 0);
//ve aynı şekilde konum ve tıklanacak tuşların HexaDecimal cinsinden ASCII değerlerini gönderiyoruz ve tıklamasını sağlıyoruz
}
Bu sayede biz bilgisayar başında yokken bazı zamanlı tıklama işlemlerimizi yaptırabiliriz. Fareyi ekranda gezdirip işlemler yaptırabiliriz.
İyi Çalışmalar dilerim -- Takipte Kalın
Burak Hamdi TUFAN
Comments
Merhaba, Webcamden aldığım görüntüdeki objenin hareket ettiği yönlerde Mouse imlecini de hareket ettirmek istiyorum. Aforge.net kütüphanesini kullanarak obje takibi yapabiliyorum. Fakat Mouse kontrolünü sağlayamadım. Bunu nasıl yapabilirim?
2018/02/19 11:37:11Bu konuda nasıl bir algoritma olulşturduğunuzu görebilirsem daha iyi yardımcı olabilirim.
2018/04/23 08:25:43