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);
}