Поделиться через


Функция GetKeyboardState (winuser.h)

Копирует состояние 256 виртуальных ключей в указанный буфер.

Синтаксис

BOOL GetKeyboardState(
  [out] PBYTE lpKeyState
);

Параметры

[out] lpKeyState

Тип: PBYTE

Массив 256-байтов, получающий данные о состоянии для каждого виртуального ключа.

Возвращаемое значение

Тип: BOOL

Если функция выполнена успешно, возвращаемое значение ненулевое.

Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.

Замечания

Приложение может вызвать эту функцию, чтобы получить текущее состояние всех виртуальных ключей. Состояние изменяется как поток удаляет сообщения клавиатуры из очереди сообщений. Состояние не изменяется, так как сообщения клавиатуры отправляются в очередь сообщений потока, а также не изменяются при публикации или извлечении из очередей сообщений других потоков. (Исключение: потоки, подключенные через AttachThreadInput , имеют одно и то же состояние клавиатуры.)

Когда функция возвращается, каждый элемент массива, на который указывает параметр lpKeyState , содержит данные о состоянии для виртуального ключа. Если бит высокого порядка равен 1, ключ вниз; в противном случае это происходит. Если ключ является ключом переключателя, например CAPS LOCK, то бит низкого порядка равен 1, если ключ переключается и равен 0, если ключ отключен. Бит низкого порядка не имеет смысла для ключей без переключения. Переключение ключа, как говорят, переключается, когда он включен. Переключатель индикатора клавиши (если таковой) на клавиатуре будет включен, когда ключ переключается, и отключается, когда клавиша отключена.

Чтобы получить сведения о состоянии отдельного ключа, используйте функцию GetKeyState . Чтобы получить текущее состояние отдельного ключа независимо от того, извлекается ли соответствующее сообщение клавиатуры из очереди сообщений, используйте функцию GetAsyncKeyState .

Приложение может использовать константы кода виртуального ключа VK_SHIFT, VK_CONTROL и VK_MENU в качестве индексов в массив, на который указывает lpKeyState. Это дает состояние клавиш SHIFT, CTRL или ALT без различия между левым и правым. Приложение также может использовать следующие константы кода виртуального ключа в качестве индексов, чтобы различать экземпляры этих ключей слева и справа:

VK_LSHIFT
VK_RSHIFT
VK_LCONTROL
VK_RCONTROL
VK_LMENU
VK_RMENU
 

Эти константы слева и справа доступны для приложения только с помощью функций GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState, GetKeyState и MapVirtualKey.

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
Header winuser.h (включая Windows.h)
Library User32.lib
DLL User32.dll
Набор API ext-ms-win-ntuser-rawinput-l1-1-0 (представлен в Windows 10 версии 10.0.14393)

См. также