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 ),
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
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,如需转载请自行联系原作者