c# Desktop

Klavyede Tuşlara Basmayı Engelleyen c# Form Uygulaması

Uygulamanız çalışırken klavyedeki bazı tuşların çalışmasını engellemek isteyebilirsiniz. Örneğin Alt + F4 tuşunu engelleyerek programın kapatılmasını engelleyebilirsiniz. Ayrıca bazı tuşların kullanımını program açıkken engellemek isteyebilirsiniz. Tüm bu işlemleri rahatlıkla yapabilirsiniz.

Öncelikle aşağıdaki kütüphaneleri projeye dahil ediniz.

using System.Diagnostics;
using System.Runtime.InteropServices;

Daha sonra global tanımlamaları yapalım.

        [StructLayout(LayoutKind.Sequential)]
        private struct KeyboardDLLStruct
        {
            public Keys key;
            public int scanCode;
            public int flags;
            public int time;
            public IntPtr extra;
        }
 
        private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr SetWindowsHookEx(int id, LowLevelKeyboardProc callback, IntPtr hMod, uint dwThreadId);
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool UnhookWindowsHookEx(IntPtr hook);
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr CallNextHookEx(IntPtr hook, int nCode, IntPtr wp, IntPtr lp);
        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr GetModuleHandle(string name);
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern short GetAsyncKeyState(Keys key);
 
        private IntPtr ptrHook;
        private LowLevelKeyboardProc objKeyboardProcess;

Aşağıdaki kodları ekleyip işlemleri tamamlayalım.

        public Form2()
        {
            ProcessModule objCurrentModule = Process.GetCurrentProcess().MainModule;
            objKeyboardProcess = new LowLevelKeyboardProc(captureKey);
            ptrHook = SetWindowsHookEx(13, objKeyboardProcess, GetModuleHandle(objCurrentModule.ModuleName), 0);
            InitializeComponent();
        }
 
        private IntPtr captureKey(int nCode, IntPtr wp, IntPtr lp)
        {
            if (nCode >= 0)
            {
                KeyboardDLLStruct objKeyInfo = (KeyboardDLLStruct)Marshal.PtrToStructure(lp, typeof(KeyboardDLLStruct));
 
                if (objKeyInfo.key == Keys.RWin || objKeyInfo.key == Keys.LWin || objKeyInfo.key == Keys.Enter || objKeyInfo.key == Keys.F4 || objKeyInfo.key==Keys.Escape)
                {
                    return (IntPtr)1;
                }
            }
            return CallNextHookEx(ptrHook, nCode, wp, lp);
        }
 

İlgili Makaleler
Veri Girişi Doğrulama (Input Validation)
Basit Veri Bağlama (Simple Data Binding)
Veri Girişi Maskeleme (MaskedTextBox)
c# Programında Bigpara Sayfasından Borsa Verilerini Selenium Kütüphanesini Kullanarak Çekme
Kompleks Veri Bağlama (Complex Data Binding)
TabControl Panelini Kullanarak Lokantalar İçin Müşteri Siparişi Alan c# Form Uygulaması
Konsol Ekranında Kod Yazma ve Çalıştırma
Yıkıcı Metotlar (Destructors)
Form Sınıfı
Kaçan Buton Oyununu Yapan c# Uygulaması
Form Sınıfına Ait Bazı Olayların ve Özelliklerin Kullanılmasına Ait Örnek Uygulama
Verilen İki Matrisi Çarpan Programı c# Dilinde Form Ortamında Yapınız
c# Console Uygulamalarında Ping Nasıl Kullanılır, Ping Atma
Yapıcı Metotlar (Constructors)
Faktöriyel Hesabı Yapan c# Windows Form Uygulaması
Kredi Kartı Taksitlendirme İşlemini Yapan c# Uygulaması
Rastgele Seçilen Bir Sayıyı Basamaklarına Ayıran, Basamak Değerini ve Sayı Değerini Bulan c# Console Uygulaması
c# Console Uygulamalarında params Dizisi Tanımlama
Yazı Tura Oyunu Yapan c# Uygulaması
Metodu Sonlandırma

Yorum Ekle
   
Kötü
İyi