Caps Lock、Num Lock、Insert、Scroll Lock、Kana Lockキーがオンになっているか調べる方法を紹介します。
.NET Framework 2.0からは、Control.IsKeyLockedメソッドにより、Caps Lock、Num Lock、Insert、Scroll Lockキーがロックされているか否かを調べることができます。Kana Lockキーは調べることができません。
If Control.IsKeyLocked(Keys.CapsLock) Then Console.WriteLine("CapsLockがオンです") End If If Control.IsKeyLocked(Keys.Insert) Then Console.WriteLine("Insertがオンです") End If If Control.IsKeyLocked(Keys.NumLock) Then Console.WriteLine("NumLockがオンです") End If If Control.IsKeyLocked(Keys.Scroll) Then Console.WriteLine("ScrollLockがオンです") End If
if (Control.IsKeyLocked(Keys.CapsLock)) Console.WriteLine("CapsLockがオンです"); if (Control.IsKeyLocked(Keys.Insert)) Console.WriteLine("Insertがオンです"); if (Control.IsKeyLocked(Keys.NumLock)) Console.WriteLine("NumLockがオンです"); if (Control.IsKeyLocked(Keys.Scroll)) Console.WriteLine("ScrollLockがオンです");
なおVB.NETでは、My.Computer.KeyboardのCapsLock、NumLock、ScrollLockプロパティでも取得できます。
.NET Framework 1.1以前では、Win32 APIのGetKeyState関数を使う必要があります。GetKeyState関数では、Caps Lock、Num Lock、Insert、Scroll Lock、Kana Lockキーの状態を取得できます。
以下に、GetKeyState関数を使ってキーがロックされているか調べるメソッドの例を示します。
<System.Runtime.InteropServices.DllImport("user32.dll")> _ Private Shared Function GetKeyState(nVirtKey As Integer) As Integer End Function ''' <summary> ''' トグルキーの状態がオンであるかを調べます。 ''' </summary> ''' <param name="keyVal">調べるキー。</param> ''' <returns>キーの状態がオンであれば、True。</returns> Public Shared Function IsKeyLocked(keyVal As System.Windows.Forms.Keys) _ As Boolean Return (GetKeyState(CInt(keyVal)) And 1) = 1 End Function
[System.Runtime.InteropServices.DllImport("user32.dll")] private static extern int GetKeyState(int nVirtKey); /// <summary> /// トグルキーの状態がオンであるかを調べます。 /// </summary> /// <param name="keyVal">調べるキー。</param> /// <returns>キーの状態がオンであれば、True。</returns> public static bool IsKeyLocked(System.Windows.Forms.Keys keyVal) { return (GetKeyState((int)keyVal) & 1) == 1; }
このメソッドの使い方は、例えば以下のようになります。
If IsKeyLocked(Keys.CapsLock) Then Console.WriteLine("CapsLockがオンです") End If If IsKeyLocked(Keys.Insert) Then Console.WriteLine("Insertがオンです") End If If IsKeyLocked(Keys.NumLock) Then Console.WriteLine("NumLockがオンです") End If If IsKeyLocked(Keys.Scroll) Then Console.WriteLine("ScrollLockがオンです") End If If IsKeyLocked(Keys.KanaMode) Then Console.WriteLine("KanaLockがオンです") End If
if (IsKeyLocked(Keys.CapsLock)) Console.WriteLine("CapsLockがオンです"); if (IsKeyLocked(Keys.Insert)) Console.WriteLine("Insertがオンです"); if (IsKeyLocked(Keys.NumLock)) Console.WriteLine("NumLockがオンです"); if (IsKeyLocked(Keys.Scroll)) Console.WriteLine("ScrollLockがオンです"); if(IsKeyLocked(Keys.KanaMode)) Console.WriteLine("KanaLockがオンです");
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。