![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
NumLock [D7, WinXP]
VasRoG © (2005-07-25 16:05:00)Как определить в ходе работы программы нажата ли клавиша NumLock и, если нет, то включить ее.
alpet (2005-07-27 19:16:00) [1]Because the SetKeyboardStatefunction alters the input state of the calling thread and not the global input state of the system, an application cannot use SetKeyboardStateto set the NUM LOCK, CAPS LOCK, or SCROLL LOCK indicator lights on the keyboard. These can be set or cleared using SendInput to simulate keystrokes.
SergProger (2005-07-27 19:12:00) [2]Воспользуйся Api-функциями
procedure GetKeyboardState(var KeyState: TKeyboardState);
procedure SetKeyboardState(var KeyState: TKeyboardState);
Вот коды клавиш:
CapsLock 020
NumLock 144
ScrollLock 145
Shift 016
Ctrl 017
Alt 018
Insert 045
Delete 046
Tab 009
Пример:
Меняем состояние NumLock, CapsLock и ScrollLock на противоположное:
var KS: TKeyboardState;
begin
GetKeyboardState(KS); //Читаем значения
KS[020]:=KS[020] XOR 1; //Меняем CapsLock
KS[144]:=KS[144] XOR 1; //NumLock
KS[145]:=KS[145] XOR 1; //ScrollLock
SetKeyboardState(KS); //Применяем значения
end;
alpet (2005-07-25 19:27:00) [3]Влючить можно через keybd_event (NT/W2k+) или SendInput.
begin...end (2005-07-25 19:14:00) [4]> TUser © (25.07.05 18:55) [1]
> SetKeyState
Такой функции нет.
> SetKeyboardState
И как? Работает?
TUser (2005-07-25 18:55:00) [5]GetKeyboardState/GetKeyState/SetKeyboardState/SetKeyState