17/11/2015 11

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.

İlk olarak Sistem DLL dosyalarını kullanacağımız için

using System.Runtime.InteropServices;
kütüphanesini isim uzayına eklememiz gerekmektedir. Ve ardından kulanacağımız değişkenleri ve DLL dosyasını programa tanıtmamız 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


Tags

Share this Post



Post a Comment

Success! Your comment sent to post. It will be showed after confirmation.
Error! There was an error sending your comment.

Comments

  • merve

    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:11
    • Burak Hamdi TUFAN

      Bu konuda nasıl bir algoritma olulşturduğunuzu görebilirsem daha iyi yardımcı olabilirim.

      2018/04/23 08:25:43