public KeyStatusStatusBar(bool CapsLock, bool NumLock)
{
InitializeComponent();
...
Application.Idle += new System.EventHandler(OnIdle);
}
...
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true, CallingConvention=CallingConvention.Winapi)]
public static extern short GetKeyState(int keyCode);
public void OnIdle(object sender, EventArgs e)
{
bool CapsLock = (((ushort) GetKeyState(0x14 )) & 0xffff) != 0;
bool NumLock = (((ushort) GetKeyState(0x90 )) & 0xffff) != 0;
if (CapsLockPanel != null)
{
CapsLockPanel.Text = CapsLock ? "CAP" : "";
}
if (NumLockPanel != null)
{
NumLockPanel.Text = NumLock ? "NUM" : "";
}
}