Работаем с индикацией клавиатуры |
Автор Бельбаков Александр | |
08.11.2001 г. | |
Как активировать или деактивировать индикацию Num Lock, Caps Lock или Scroll Lock на клавиатуре с помощью API функции SetKeyboardState.
Чтобы активировать или деактивировать индикацию Num Lock, Caps Lock или Scroll Lock на клавиатуре, надо использовать API функцию SetKeyboardState. В этой функции используется такой тип данных как Byte. Visual Basic поддерживает этот тип данных, но вместо него мы будем передавать пользовательский тип данных, в котором будет содержаться массив с состоянием клавиш. Сначала создадим новый проект и объявим API функцию, константы и пользовательский тип данных в коде формы: Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long ' вместо типа данных Byte мы ставим пользовательский тип данных KeyboardBytes Private Const VK_NUMLOCK = &H90 Private Const VK_CAPITAL = &H14 Private Const VK_SCROLL = &H91 Private Type KeyboardBytes kbByte(0 To 255) As Byte End Type Private kbArray As KeyboardBytes Теперь добавим в массив kbArray состояния клавиш Num Lock, Caps Lock или Scroll Lock. Но прежде этого добавьте на форму таймер (Tmr) с интервалом 300 и в событие Timer напишите: Private Sub Tmr_Timer() kbArray.kbByte(VK_NUMLOCK) = (Rnd * 1) 1 kbArray.kbByte(VK_CAPITAL) = (Rnd * 1) 1 kbArray.kbByte(VK_SCROLL) = (Rnd * 1) 1 SetKeyboardState kbArray End Sub Теперь всё готово. После запуска вашего проекта индикаторы Num Lock, Caps Lock и Scroll Lock будут беспорядочно мигать. Это будет происходить потому, что значение состояния клавиши у нас получается равным либо 0, либо 1 (из - за функции лучайных чисел Rnd). |