Аннотация

Документация для SetKeyboardState () правильно сообщает о том, что вы не можете использовать этот API для переключения клавиш NUM LOCK, CAPS LOCK и SCROLL LOCK. Вы можете использовать keybd_event () для переключения клавиш NUM LOCK, CAPS LOCK и SCROLL LOCK в Windows NT. Один и тот же способ действует для переключения CAPS LOCK и SCROLL LOCK в Windows 95, но не работает для NUM LOCK.

Дополнительная информация

Следующий пример программы выключает индикатор NUM LOCK на on, если он выключен. Функция SetNumLock, определенная здесь, имитирует нажатие клавиши NUM LOCK с помощью keybd_event () и виртуального ключа VK_NUMLOCK. Он принимает логическое значение, которое указывает, следует ли выключить источник света (ложь) или on (истина). Один и тот же метод можно использовать для клавиши CAPS LOCK (VK_CAPITAL) и клавиши SCROLL LOCK (VK_SCROLL).

Пример кода

   /* Compile options needed:   */    #include <windows.h>   void SetNumLock( BOOL bState )   {      BYTE keyState[256];      GetKeyboardState((LPBYTE)&keyState);      if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||          (!bState && (keyState[VK_NUMLOCK] & 1)) )      {      // Simulate a key press         keybd_event( VK_NUMLOCK,                      0x45,                      KEYEVENTF_EXTENDEDKEY | 0,                      0 );      // Simulate a key release         keybd_event( VK_NUMLOCK,                      0x45,                      KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,                      0);      }   }   void main()   {      SetNumLock( TRUE );   }

Нужна дополнительная помощь?

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?

Спасибо за ваш отзыв!

×