Функция 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 и MapVirtualKey .
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
Набор API | ext-ms-win-ntuser-rawinput-l1-1-0 (появилось в Windows 10 версии 10.0.14393) |