C Sharp ile Tuş Okuma

Bu derste tuş okumanızda olağan üstü kolaylık sağlıyacak bir kodu sizlerle paylaşacağım.

Bu derste tuş okumanızda olağan üstü kolaylık sağlıyacak bir kodu sizlerle paylaşacağım.

Öncelikle projemizde yeni bir sınıf oluşturalım ve şu kodları ekelyelim:


using System;

using System.Runtime.InteropServices;

using System.Threading;



namespace projeadi

{



public static class ReadKey

{



//gruplamalar

#region events



public static delegate void _GetKey(Keys key,int ascii,bool down);

public static event _GetKey GetKey;



#endregion



#region api



[DllImport("user32.dll")]

public static extern int GetAsyncKeyState(long vKey);



#endregion



#region variables



//bu değişken tuşların ascii değerlerini tutucak

public static bool[] keys = new down[255];



//bu da arka planda okunacak tuşları bulacak olan thread

internal static Thread _readmethods;



//iki kere yüklemeyi önlemek için

internal static bool load=false;



#endregion



#region methods



public static bool Load()

{



//eğer daha önceden yüklenmiş ise false dönücek

if(load)

return false;



load=true;

_readmethods = new Thread(readkeys);

_readmethods.Start();



return true;

}



internal static bool down(int ascii)

{

return (GetAsyncKeyState(ascii) == -32767 || GetAsyncKeyState(ascii) == -32768);

}



internal static void readkeys()

{



//sürekli okumalı

while(true)

{



//tuşlar 1 den başlar 255 de biter

for(int i = 1;i <= 255;i++)

{



#region down



//eğer tuşa basılıysa

if(down(i))

{



//eğer daha önceden basılmadıysa

if(!keys)

{



keys=true;



//eğer event atanmışsa

if(GetKey!=null)

GetKey((Keys)i,i,keys);



}



}



#endregion

#region up



//değilse

else

{



//daha önceden basıldıysa

if(keys)

{



keys=false;



//eğer event atanmışsa

if(GetKey!=null)

GetKey((Keys)i,i,keys);



}



}



#endregion



}



Thread.Sleep(1);//1 salise beklemeli fakat şunu belirtmem lazım

//burdaki komut 1 salise değil daha uzun bir süre beklememize neden oluyo

//ben kendim datetime kontrol yazarak 1 salise yi yıkalıyorum ama on bu dersimizde değil başka bir dersimizde anlatacağım



}



}

#endregion



}



}



Kodlar bu kadar. Kolay gelsin.
  • Etiketler;
Mav1995 Mav1995
Sanalkurs.net
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git