type TKeyType = (ktCapsLock, ktNumLock, ktScrollLock); procedure SetLedState(KeyCode: TKeyType; bOn: Boolean); var KBState: TKeyboardState; Code: Byte; begin case KeyCode of ktScrollLock: Code : = VK_SCROLL; ktCapsLock: Code : = VK_CAPITAL; ktNumLock: Code : = VK_NUMLOCK; end; GetKeyboardState(KBState); if (Win32Platform = VER_PLATFORM_WIN32_NT) then begin if Boolean(KBState[Code]) <> bOn then begin keybd_event(Code, MapVirtualKey(Code, 0 ), KEYEVENTF_EXTENDEDKEY, 0 ); keybd_event(Code, MapVirtualKey(Code, 0 ), KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,
0 ); end; end else begin KBState[Code] : = Ord(bOn); SetKeyboardState(KBState); end; end; procedure TForm1.Button1Click(Sender: TObject); begin SetLedState(ktCapsLock, True); // CapsLock on SetLedState(ktNumLock, True); // NumLock on SetLedState(ktScrollLock, True); // ScrollLock on end;
本文转自 OldHawk 博客园博客,原文链接:http://www.cnblogs.com/taobataoma/archive/2007/08/20/862694.html,如需转载请自行联系原作者