Windows Form Uygulamalarinda Klavye Yönetimi – Tuslarin idle kontrolü

Merhaba arkadaslar;
Bu makalemizde c# programlama dilini kullanarak tus kontrollerinden bahsedecegiz. Aslinda çok elzem bir bilgi olarak görünmeyebilir fakat bazi durumlarda gerçekten hayat kurtarici olabilmekte. Öncelikle projemize “user32.dll” dosyasini import ederek baslayacagiz. Global alan olarak tanimladigimiz yerde,

[DllImport("user32.dll")]
extern static int GetKeyState(int key);
.

kodlariyla fonksiyonu modüle deklare etme islemini tamamlayarak dll dosyamizi import ediyoruz.(Bu arada name space kismina ekleme yapmak için DllImport yazdiktan sonra “Alt+Shift+F10” tuslarina basarak name space kismina daha kolay yolda ekleme yapabilirsiniz…)

Örnek olarak klavyemizin CapsLock ve Numlock tuslarinin devrede olup olmadigini kontrol edelim. Bunun için;

private void timer1_Tick(object sender, EventArgs e)
{
    if (GetKeyState((int)Keys.CapsLock) == 1)
    {
        lblcaps.BackColor = Color.Green;
    }
    else
    {
        lblcaps.BackColor = Color.Gray;
    }

}

private void timer2_Tick(object sender, EventArgs e)
{
    if (GetKeyState((int)Keys.NumLock)==1)
    {
        lblnum.BackColor = Color.Green;
    }
    else
    {
        lblnum.BackColor = Color.Gray;
    }
}

Dikkatinizi çektigi üzere kodlari timer nesnelerinin tick olaylari içine yazdik. Sebebi ise kontrolün devamliligini saglamaktir. Bu sekilde klavyemizde bulunan tuslarin hemen hemen hepsiyle alakali ayarlamalar yapabiliriz.

.

Tags:

5 thoughts on “Windows Form Uygulamalarinda Klavye Yönetimi – Tuslarin idle kontrolü

  • timer_Tick kullanmamiza gerek yok. Formun örnegin  “Form1_ KeyDown” eventi zaten klavyeden basilacak tuslari dinlememize yariyor. Arkadasin kodlarini bu blog içine atarsak olayin sürekliligi saglanmis olur.Wink

  • Burada timerin intervalina gerek yok. Çünkü Timer.Interval sadece timerin hizini ayarlar.

    Burada timer capslock ve numlock tuslarina tekrar tekrar basilabilmesi için konmustur. Eger timer kullanilmasaydi;
    private void timer1_Tick(object sender, EventArgs e) Yerine;
    private void Form1_Load(object sender, EventArgs e) olucakti.
    Buda capslock ve numlock butonunun sadece form açildigindaki durumunu gösterecektir
  • Merhaba,


    Ben suan windows uygulamada , consoleda bulunan COnsoleKeyInfo’nun ayni islevini yaptirmasini istiyorum. Bu dll ayni özellikleri vs. barindiriyor mu? 
  • Burada timer’in intervali ne olacak?

  • entresan bir fikir, tebrik ederiz

Bir cevap yazın

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