DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

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);

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;

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;

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.

Facebook Comments Box
  • InfusTec
  • 3.169 views
  • 0 comentários
  • 10 de abril de 2015

Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!

Deixe um comentário

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados