Советы по Delphi

       

Чтение и установка клавиши 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

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

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

замечает:

Вот что по этому поводу сказано в 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]



Содержание раздела