Функция LoadKeyboardLayoutA (winuser.h)
Загружает в систему новый идентификатор языкового стандарта ввода (прежнее название — раскладка клавиатуры).
До Windows 8. Одновременно можно загрузить несколько идентификаторов входных языковых стандартов, но одновременно активен только один процесс. Загрузка нескольких идентификаторов входных языковых стандартов позволяет быстро переключаться между ними.
Начиная с Windows 8. Идентификатор входного языкового стандарта загружается для всей системы. Эта функция не действует, если текущий процесс не владеет окном с фокусом клавиатуры.
Синтаксис
HKL LoadKeyboardLayoutA(
[in] LPCSTR pwszKLID,
[in] UINT Flags
);
Параметры
[in] pwszKLID
Тип: LPCTSTR
Имя идентификатора входного языкового стандарта для загрузки. Это имя представляет собой строку, состоящую из шестнадцатеричного значения идентификатора языка (низкое слово) и идентификатора устройства (высокое слово). Например, в английском языке США есть идентификатор языка 0x0409, поэтому основной макет английского языка США называется "00000409". Варианты американского английского макета (например, макет Дворжак) называются "00010409", "00020409" и т. д.
Список входных макетов, которые поставляются вместе с Windows, см. в разделе Идентификаторы клавиатуры и Редакторы методов ввода для Windows.
[in] Flags
Тип: UINT
Указывает способ загрузки идентификатора входного языкового стандарта. Этот параметр может быть одним или несколькими из следующих значений.
Значение | Значение |
---|---|
|
До Windows 8. Если указанный идентификатор входного языкового стандарта еще не загружен, функция загружает и активирует идентификатор входного языкового стандарта для текущего потока.
Начиная с Windows 8. Если указанный идентификатор входного языкового стандарта еще не загружен, функция загружает и активирует идентификатор входного языкового стандарта для системы. |
|
До Windows 8. Запрещает процедуре перехватчика ShellProc получать код перехватчика HSHELL_LANGUAGE при загрузке нового идентификатора входного языкового стандарта. Это значение обычно используется, когда приложение загружает несколько входных идентификаторов языкового стандарта один за другим. Применение этого значения ко всем идентификаторам языкового стандарта, кроме последнего, задерживает обработку оболочки до тех пор, пока не будут добавлены все входные идентификаторы языкового стандарта.
Начиная с Windows 8. В этом сценарии последний входной идентификатор языкового стандарта устанавливается для всей системы. |
|
До Windows 8. Перемещает указанный идентификатор входного языкового стандарта в головку списка идентификаторов входного языкового стандарта, делая этот идентификатор активным идентификатором языкового стандарта для текущего потока. Это значение переупорядочение списка идентификаторов входного языкового стандарта, даже если KLF_ACTIVATE не указан.
Начиная с Windows 8. Перемещает указанный идентификатор входного языкового стандарта в голову списка идентификаторов входного языкового стандарта, делая этот идентификатор активным идентификатором языкового стандарта для системы. Это значение переупорядочение списка идентификаторов входного языкового стандарта, даже если KLF_ACTIVATE не указан. |
|
Если новый идентификатор входного языкового стандарта имеет тот же идентификатор языка, что и идентификатор текущего входного языкового стандарта, новый идентификатор входного языкового стандарта заменяет текущий в качестве идентификатора входного языкового стандарта для этого языка. Если это значение не указано, а идентификаторы входного языкового стандарта имеют одинаковые идентификаторы языка, текущий идентификатор языкового стандарта не заменяется и функция возвращает значение NULL. |
|
Заменяет указанный идентификатор входного языкового стандарта другим языковым стандартом, предпочитаемым пользователем. Система начинается с этого набора флагов, и рекомендуется, чтобы приложение всегда использовало этот флаг. Подстановка происходит только в том случае, если раздел реестра HKEY_CURRENT_USER\Keyboard Layout\Substitutes явно определяет языковой стандарт подстановки. Например, если ключ содержит имя значения "00000409" со значением "00010409", загрузка макета США ("00000409") приведет к загрузке макета United States-Dvorak ("00010409"). Система использует KLF_SUBSTITUTE_OK при загрузке, и рекомендуется, чтобы все приложения использовали это значение при загрузке идентификаторов входного языкового стандарта, чтобы убедиться, что выбраны предпочтения пользователя. |
|
До Windows 8. Этот флаг действителен только для KLF_ACTIVATE. Активирует указанный идентификатор входного языкового стандарта для всего процесса и отправляет сообщение WM_INPUTLANGCHANGE в окно фокуса или активно текущего потока. Как правило, LoadKeyboardLayout активирует идентификатор входного языкового стандарта только для текущего потока.
Начиная с Windows 8: этот флаг не используется. LoadKeyboardLayout всегда активирует идентификатор входного языкового стандарта для всей системы, если текущий процесс владеет окном с фокусом клавиатуры. |
|
Этот флаг не поддерживается. Вместо этого используйте функцию UnloadKeyboardLayout . |
Возвращаемое значение
Тип: HKL
Если функция выполнена успешно, возвращаемым значением будет идентификатор входного языкового стандарта, соответствующий имени, указанному в pwszKLID. Если соответствующий языковой стандарт недоступен, возвращаемое значение является языком по умолчанию в системе.
Если функция завершается сбоем, возвращается значение NULL. Это может произойти, если библиотека макета загружена из каталога приложения.
Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Идентификатор языкового стандарта ввода является более широким понятием, чем раскладка клавиатуры, так как он также может охватывать преобразователь речи в текст, метод ввода Редактор (IME) или любую другую форму ввода.
Как правило, приложение может загружать идентификатор входного языкового стандарта или IME по умолчанию для языка и может сделать это, указав только строковую версию идентификатора языка. Если приложение хочет загрузить определенный языковой стандарт или IME, оно должно прочитать реестр, чтобы определить конкретный идентификатор входного языкового стандарта для передачи в LoadKeyboardLayout. В этом случае запрос на активацию идентификатора входного языкового стандарта по умолчанию для языкового стандарта активирует первый соответствующий. Определенный IME следует активировать с помощью явного входного идентификатора языкового стандарта, возвращаемого из GetKeyboardLayout или LoadKeyboardLayout.
До Windows 8. Эта функция влияет только на макет текущего процесса или потока.
Начиная с Windows 8. Эта функция влияет на макет всей системы.
Примечание
Заголовок winuser.h определяет LoadKeyboardLayout в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
См. также раздел
Основные понятия
Другие ресурсы
Справочные материалы