Как активировать или деактивировать индикацию 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 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).