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


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

Загружает новый идентификатор языкового стандарта ввода (ранее называемый раскладкой клавиатуры) в систему.

до Windows 8: за один раз можно загрузить несколько идентификаторов языкового стандарта ввода, но одновременно активируется только один процесс. Загрузка нескольких входных идентификаторов языкового стандарта позволяет быстро переключаться между ними.

начиная с Windows 8: входной идентификатор языкового стандарта загружается для всей системы. Эта функция не влияет, если текущий процесс не владеет окном с фокусом клавиатуры.

Синтаксис

HKL LoadKeyboardLayoutA(
  [in] LPCSTR pwszKLID,
  [in] UINT   Flags
);

Параметры

[in] pwszKLID

Тип: LPCTSTR

Имя входного идентификатора языкового стандарта для загрузки. Это имя представляет собой строку, состоящую из шестнадцатеричного значения идентификатора языка (низкое слово) и идентификатора устройства (высокое слово). Например, английский язык США имеет идентификатор языка 0x0409, поэтому основной макет английского языка США называется "00000409". Варианты английского языка США (например, макет Dvorak) называются "00010409", "00020409" и т. д.

Список входных макетов, предоставляемых в Windows, см. в разделе Идентификаторы клавиатуры и редакторы методов ввода для Windows.

[in] Flags

Тип: UINT

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

Ценность Значение
KLF_ACTIVATE
0x00000001
до Windows 8: Если указанный идентификатор языкового стандарта ввода еще не загружен, функция загружает и активирует идентификатор входного языкового стандарта для текущего потока.

начиная с Windows 8: Если указанный идентификатор языкового стандарта ввода еще не загружен, функция загружает и активирует входной идентификатор языкового стандарта для системы.

KLF_NOTELLSHELL
0x00000080
до Windows 8: запрещает процедуре перехватчика ShellProc получать код перехватчика HSHELL_LANGUAGE при загрузке нового идентификатора языкового стандарта ввода. Это значение обычно используется, когда приложение загружает несколько входных идентификаторов языкового стандарта друг за другом. Применение этого значения ко всем, кроме последнего входного языкового стандарта, задерживает обработку оболочки до добавления всех входных идентификаторов языкового стандарта.

начиная с Windows 8: В этом сценарии для всей системы устанавливается последний идентификатор языкового стандарта ввода.

KLF_REORDER
0x00000008
До Windows 8: Перемещает указанный идентификатор языкового стандарта в голову списка входных идентификаторов языкового стандарта, что делает этот идентификатор активным языковым стандартом для текущего потока. Это значение переупорядочение списка входных идентификаторов языкового стандарта, даже если KLF_ACTIVATE не указан.

начиная с Windows 8: перемещает указанный идентификатор языкового стандарта в голову списка входных идентификаторов языкового стандарта, что делает этот идентификатор активным языковым стандартом для системы. Это значение переупорядочение списка входных идентификаторов языкового стандарта, даже если KLF_ACTIVATE не указан.

KLF_REPLACELANG
0x00000010
Если новый идентификатор языкового стандарта ввода имеет тот же идентификатор языка, что и текущий идентификатор языкового стандарта ввода, новый идентификатор языкового стандарта ввода заменяет текущий в качестве входного языкового стандарта для этого языка. Если это значение не указано, а входные идентификаторы языкового стандарта имеют одинаковые идентификаторы языка, текущий идентификатор языкового стандарта ввода не заменен, а функция возвращает NULL.
KLF_SUBSTITUTE_OK
0x00000002
Заменяет указанный идентификатор языкового стандарта ввода другим языковым стандартом, предпочитаемым пользователем. Система начинается с этого набора флагов и рекомендуется, чтобы приложение всегда использовало этот флаг. Подстановка возникает только в том случае, если раздел реестра HKEY_CURRENT_USER\Keyboard Layout\Substitutes явно определяет языковой стандарт подстановки. Например, если ключ содержит имя значения "00000409" со значением "00010409", загрузка макета США ("00000409") приводит к загрузке макета States-Dvorak ("00010409") вместо этого. Система использует KLF_SUBSTITUTE_OK при загрузке и рекомендуется, чтобы все приложения использовали это значение при загрузке входных идентификаторов языкового стандарта, чтобы убедиться, что выбраны предпочтения пользователя.
KLF_SETFORPROCESS
0x00000100
До Windows 8: этот флаг действителен только с KLF_ACTIVATE. Активирует указанный идентификатор языкового стандарта ввода для всего процесса и отправляет сообщение WM_INPUTLANGCHANGE в текущее окно фокуса или активного потока. Как правило, LoadKeyboardLayout активирует входной идентификатор языкового стандарта только для текущего потока.

начиная с Windows 8: этот флаг не используется. LoadKeyboardLayout всегда активирует входной идентификатор языкового стандарта для всей системы, если текущий процесс владеет окном с фокусом клавиатуры.

KLF_UNLOADPREVIOUS
Этот флаг не поддерживается. Вместо этого используйте функцию UnloadKeyboardLayout.

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

Тип: HKL

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

Если функция завершается ошибкой, возвращаемое значение равно NULL. Это может произойти, если библиотека макета загружается из каталога приложения.

Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.

Замечания

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

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

до Windows 8: эта функция влияет только на макет текущего процесса или потока.

начиная с Windows 8: эта функция влияет на макет всей системы.

Заметка

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

Требования

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

См. также

ActivateKeyboardLayout

концептуальные

GetKeyboardLayoutName

ввода клавиатуры

MAKELANGID

другие ресурсы

Справочник

UnloadKeyboardLayout