Функция GetKeyNameTextA (winuser.h)
Извлекает строку, представляющую имя ключа.
Синтаксис
int GetKeyNameTextA(
[in] LONG lParam,
[out] LPSTR lpString,
[in] int cchSize
);
Параметры
[in] lParam
Тип: LONG
Второй параметр обрабатываемого сообщения клавиатуры (например , WM_KEYDOWN). Функция интерпретирует следующие позиции битов в lParam.
Bits | Значение |
---|---|
16—23 | Код сканирования. Значение зависит от изготовителя оборудования. |
24 | Указывает, является ли клавиша расширенной, например клавишами ALT и CTRL справа, которые отображаются на клавиатуре с расширенными 101- или 102-клавишными клавишами. Значение равно 1, если это расширенный ключ; в противном случае — 0. |
25 | "Не волнует" бит. Приложение, вызывающее эту функцию, задает этот бит, чтобы указать, что функция не должна различать левую и правую клавиши CTRL и SHIFT, например. |
Дополнительные сведения см. в разделе Флаги сообщения нажатия клавиш.
[out] lpString
Тип: LPTSTR
Буфер, который получит имя ключа.
[in] cchSize
Тип: int
Максимальная длина (в символах) имени ключа, включая завершающий символ NULL. (Этот параметр должен быть равен размеру буфера, на который указывает параметр lpString .)
Возвращаемое значение
Тип: int
Если функция выполняется успешно, строка, завершающаяся значением NULL, копируется в указанный буфер, а возвращаемое значение — это длина строки в символах, не подсчитывающая завершающий нуль-символ.
Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Формат строки "ключ-имя" зависит от текущей раскладки клавиатуры.
В раскладке клавиатуры хранится список имен в виде строк символов для клавиш с именами длиннее одного символа. Имя клавиши преобразуется в соответствии с текущей активной раскладкой клавиатуры, поэтому функция может возвращать разные результаты для разных раскладок клавиатуры.
Имя клавиши символа — это сам символ. Имена неуклюжих ключей приведены полностью.
Этот метод может неправильно работать с некоторыми раскладками клавиатуры , которые создают несколько символов (т. е. лигатуры) и /или дополнительные символы Юникода, которые печатаются одним нажатием клавиши. Кроме того, ключи, сопоставленные с "A". Коды виртуальных ключей Z преобразуются в верхний регистр "A". Z' символы независимо от текущей раскладки клавиатуры. В таких случаях используйте методы ToUnicode или ToUnicodeEx .
Заголовок winuser.h определяет GetKeyNameText как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по