Caps Lock ve Num Lock Tuşlarının Durumunu Öğrenmek ve Değiştirmek Gönderen: FetihlerFatihi Tarih: 15 May 2006 23:12:34
Caps Lock ve Num Lock Tuşlarının Durumunu Öğrenmek ve Değiştirmek Klavyenin belirtilen tuşlarının devrede olup olmadığını öğrenmek istiyorsanız GetKeyboardState() fonksiyonundan yararlanabilirsiniz. Bu fonksiyon TKeyboardState tipinde bir değişkeni parametre olarak aldığı için önceden bu değişken tanımlanmalıdır. Bu fonksiyon hakkında bilgi vermek için projenin formunu aşağıdaki gibi düzenledim. Bu fonk¬siyon Borland.Vcl.ShellApi’de tanımlıdır.

Çalışma anında “Tuşları Kontrol Et” bağlığına sahip düğme tıklandığında söz konusu tuşlar devrede ise formadaki düğmeler normal renkte, tuşlar devrede değilse bu düğmeler soluk olacak. Bu amaçla aşağıda verdiğim kodu hazırladım. Borland.Vcl.ShellApi’den yararlan¬madan bu fonksiyonu kullanmak istiyorsanız deklare edip ilgili DLL dosyasını işaret etmelisiniz.

GetKeyboardState() fonksiyonu kullanıldığı zaman kendisine parametre olarak verilen ve dizi değişkenler gibi işlev gören TKeyboardState tipindeki değişkene tuşların durumu hakkında bilgi aktarmaktadır. Hangi tuş hakkında bilgi edinilmek isteniyorsa KeyboardState tipindeki dizi değişkenin ilgili elemanın içeriğine bakılmalıdır.

Söz konusu tuş devrede değilse dizi değişkenin o elemanı 0 değerini içerir. Yanda verilen ekran görüntüsünü hem Caps Lock hem Num Lock tuşları devrede değilken bu kodu işlettik¬ten sonra aldım.
Bu sırada Caps Lock tuşuna basıp klavyeyi büyük harflere kilitleyip yukarıda verilen yordamı tekrar işletince aşağıdaki gibi bir sonuç elde ettim. Benzer mantıkla VK_SCROLL paramet¬resi ile Scroll Lock tuşunu kontrol edebilirsiniz.

Delphi projelerinde tuşların durumunda değişiklik yapmak istiyorsanız SetKeyboardState() fonksiyonundan yararlanmalı¬sınız. Bu fonksiyon ile tuşların durumlarının nasıl değiştirildi¬ğini anlatmak için projenin formunu 2 düğme yerleştirdim ve “Caps_Lock_Tusu” adını verdiğim düğmenin Click yordamını aşağıdaki gibi düzenledim. SetKeyboardState() fonksi¬yonun da Borland.Vcl.ShellApi’de tanımlıdır.
Var
Durum : TKeyboardState;
begin
GetKeyboardState(Durum);
If Durum[20] = 0 Then
Durum[VK_CAPITAL] := 1;
Else
Durum[VK_CAPITAL] := 0;
SetKeyboardState(Durum);
end;