我需要检查是否按下了大写锁定,并找到了一个需要联机的函数。
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern short GetKeyState(int keyCode);
答案 0 :(得分:4)
C#也有:
if (Control.IsKeyLocked(Keys.CapsLock))
Keys.CapsLock = 20(十六进制为0x14)
答案 1 :(得分:2)
通过Google搜索,我找到了this one:
void CheckKeyState()
{
if ((GetKeyState(VK_CAPITAL) & 0x0001)!=0)
AfxMessageBox("Caps Lock ON!");
else
AfxMessageBox("Caps Lock OFF!");
}
VK_CAPITAL
0x14 。
所以你可以用C#编写:
public void CheckKeyState()
{
if ((GetKeyState(0x14) & 0x0001)!=0)
System.Windows.Forms.MessageBox.Show("Caps Lock ON!");
else
System.Windows.Forms.MessageBox.Show("Caps Lock OFF!");
}
当然,what Holger says比使用P / Invoke更有意义。