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


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

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

Синтаксис

SHORT VkKeyScanExA(
  [in] CHAR ch,
  [in] HKL  dwhkl
);

Параметры

[in] ch

Тип: TCHAR

Символ, который необходимо преобразовать в код виртуального ключа.

[in] dwhkl

Тип: HKL

Входной идентификатор языкового стандарта, используемый для перевода символа. Этот параметр может быть любым входным идентификатором языкового стандарта, ранее возвращенным функцией LoadKeyboardLayout.

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

Тип: SHORT

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

Возвращаемое значение Описание
1
Нажимается любой из клавиш SHIFT.
2
Нажимается клавиша CTRL.
4
Нажимается любой клавиши ALT.
8
Нажатие клавиши Hankaku
16
Зарезервирован (определяется драйвером раскладки клавиатуры).
32
Зарезервирован (определяется драйвером раскладки клавиатуры).
 

Если функция не находит ключ, который преобразуется в переданный код символов, то как байты низкого порядка, так и байты высокого порядка содержат –1.

Замечания

Идентификатор языкового стандарта ввода — это более широкая концепция, чем раскладка клавиатуры, так как она также может охватывать преобразователь речи к тексту, редактор метода ввода (IME) или любую другую форму ввода.

Для раскладок клавиатуры, использующих клавишу ALT вправо в качестве клавиши shift (например, французского раскладки клавиатуры), состояние shift представлено значением 6, так как клавиша ALT справа преобразуется внутри клавиши CTRL+ALT.

Переводы для числовой клавиатуры (VK_NUMPAD0 через VK_DIVIDE) игнорируются. Эта функция предназначена для перевода символов в нажатия клавиш только из основного раздела клавиатуры. Например, символ "7" преобразуется в VK_7, а не VK_NUMPAD7.

VkKeyScanEx используется приложениями, которые отправляют символы с помощью WM_KEYUP и WM_KEYDOWN сообщений.

Заметка

Заголовок winuser.h определяет VkKeyScanEx как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка winuser.h (включая Windows.h)
библиотеки User32.lib
DLL User32.dll

См. также