Caps Lock が押されているかどうかを確認する必要があり、オンラインで int を必要とする関数が見つかりました。
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern short GetKeyState(int keyCode);
C# には次のものもあります。
if (Control.IsKeyLocked(Keys.CapsLock))
Keys.CapsLock = 20 (16 進数で 0x14)
グーグルから、私はこれを見つけました:
void CheckKeyState()
{
if ((GetKeyState(VK_CAPITAL) & 0x0001)!=0)
AfxMessageBox("Caps Lock ON!");
else
AfxMessageBox("Caps Lock OFF!");
}
0x14でVK_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 を使用するよりもはるかに理にかなっています。