2

我需要检查是否按下了大写锁定,并找到了一个需要在线 int 的函数。

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
    public static extern short GetKeyState(int keyCode);
4

2 回答 2

4

C#还有:

if (Control.IsKeyLocked(Keys.CapsLock))

Keys.CapsLock = 20(十六进制的 0x14)

于 2012-07-18T16:12:53.790 回答
2

通过谷歌搜索,我找到了这个

void CheckKeyState()
{
   if ((GetKeyState(VK_CAPITAL) & 0x0001)!=0)
      AfxMessageBox("Caps Lock ON!");
   else
      AfxMessageBox("Caps Lock OFF!");
}

随着0x14VK_CAPITAL_

所以你可以用 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!");
}

当然,Holger 所说的比使用 P/Invoke 更有意义。

于 2012-07-18T16:09:33.393 回答