Como ligar e desligar o Caps, Num e Scroll Lock?
Crie um novo projeto e adicione um botão.
Crie o tupo enumerado a seguir:
1
| TKeyType = (ktCapsLock, ktNumLock, ktScrollLock); |
TKeyType = (ktCapsLock, ktNumLock, ktScrollLock);
Abaixo o código fonte do procedimento:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| 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 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;
Exemplos de uso
1
2
3
4
5
6
| procedure TForm1.Button1Click(Sender: TObject);
begin
SetLedState(ktCapsLock, False); // CapsLock on
SetLedState(ktNumLock, True); // NumLock on
SetLedState(ktScrollLock, False); // ScrollLock on
end; |
procedure TForm1.Button1Click(Sender: TObject);
begin
SetLedState(ktCapsLock, False); // CapsLock on
SetLedState(ktNumLock, True); // NumLock on
SetLedState(ktScrollLock, False); // ScrollLock on
end;
Só tenha o cuidado de que o procedimento atualiza o status do caps, num e scroll lock,
mas as luzes do teclado não acompanham a atualização. Pelo mesmo nos testes que eu fiz.
-
InfusTec
-
3.170 views
- 0 comentários
- 10 de abril de 2015
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo