首先引入名称空间System.Runtime.InteropServices用来导入Windows DLL. 下面是实现代码: //控制键CapLocks状态的API函数 [DllImport("user32.dll")] static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo); //取得键状态的API函数 [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi) ] public static extern short GetKeyState(int keyCode); public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { //改变CAPLOCKS键状态 const int KEYEVENTF_EXTENDEDKEY = 0x1; const int KEYEVENTF_KEYUP = 0x2; keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0); keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0); } private void button1_Click(object sender, EventArgs e) { //取得Capslock,Numlock等键的状态 bool CapsLock = (((ushort)GetKeyState(0x14)) & 0xffff) != 0; bool NumLock = (((ushort)GetKeyState(0x90)) & 0xffff) != 0; bool ScrollLock = (((ushort)GetKeyState(0x91)) & 0xffff) != 0; // Show the status MessageBox.Show("Caps Lock is on: " + CapsLock.ToString()); MessageBox.Show("Num Lock is on: " + NumLock.ToString()); MessageBox.Show("Scroll Lock is on: " + ScrollLock.ToString()); }