C# Winform CapsLock Aç/Kapa ve Sürekli Açık / Sürekli Kapalı

Mart 24, 2010 at 4:39 Hayati GÜNEY

 

  ExamCapsLock.rar (34,46 kb)

        private bool? _isAlwaysCapsLock;

        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            try
            {
                if (_isAlwaysCapsLock != null) ToggleCapsLock((bool)_isAlwaysCapsLock);
                return base.ProcessCmdKey(ref msg, keyData);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Key Overrided Events Error:" + ex.Message);
            }
            return base.ProcessCmdKey(ref msg, keyData);
        }

        private void radioButton_CheckedChanged(object sender, EventArgs e)
        {
            if (((RadioButton)sender).Checked)
            switch (((RadioButton)sender).Name)
            {
                case "radioButton1":
                    _isAlwaysCapsLock = true;
                    ToggleCapsLock(true);
                    radioButton2.Checked = false;
                    radioButton3.Checked = false;
                    break;
                case "radioButton2":
                    _isAlwaysCapsLock = false;
                    ToggleCapsLock(false);
                    radioButton1.Checked = false;
                    radioButton3.Checked = false;
                    break;
                case "radioButton3":
                    _isAlwaysCapsLock = null;
                    radioButton1.Checked = false;
                    radioButton2.Checked = false;
                    break;
            }

        }

        [DllImport("user32.dll")]
        static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
        static void ToggleCapsLock(bool onOrOff)
        {
            if (IsKeyLocked(Keys.CapsLock) == onOrOff)return;
            keybd_event(0x14, 0x45, 0x1, (UIntPtr)0);
            keybd_event(0x14, 0x45, 0x1 | 0x2, (UIntPtr)0);
               
        }


        private void button1_Click(object sender, EventArgs e)
        {
            ToggleCapsLock(true);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            ToggleCapsLock(false);
        }


Posted in: c#

Tags: , ,