Идёт загрузка страницы...

htp://aptem.net.ru





Чтение и установка клавиши NumLock


   
VAR KS : TKeyboardState;
...
GetKeyboardState(KS);
IF Odd(KS[VK_NUMLOCK]) THEN {NumLock включен}

KS[VK_NUMLOCK] := KS[VK_NUMLOCK] XOR 1; {переключение NumLock}
KS[VK_NUMLOCK] := KS[VK_NUMLOCK] OR 1; {включение NumLock}
KS[VK_NUMLOCK] := KS[VK_NUMLOCK] AND (NOT 1); {выключение NumLock}

SetKeyboardState(KS);

Таким же образом:


   
... VK_CAPITAL
... VK_SCROLL
... VK_INSERT

Nomadic предлагает немного другой способ:


    var
abKeyState: array [0..255] of byte;
begin
GetKeyboardState( Addr( abKeyState[ 0 ] ) );
abKeyState[ VK_NUMLOCK ] := abKeyState[ VK_NUMLOCK ] or $01;
SetKeyboardState( Addr( abKeyState[ 0 ] ) );

Slava Kostin замечает:

Вот что по этому поводу сказано в Help Delphi:

Remarks

Because the SetKeyboardState function alters the input
state of the calling thread and not the global input state
of the system, an application cannot use SetKeyboardState
to set the NUM LOCK, CAPS LOCK, or SCROLL LOCK indicator
lights on the keyboard.
[000560]