Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо