Как определить текущий язык ввода?

Тема в разделе "WASM.WIN32", создана пользователем sasha_s, 18 дек 2007.

  1. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Юзер вводит какой-то текст в Edit. Надо определить какой язык ввода в данный момент активен.
    Перепробывал следующие способы:

    1) GetThreadLocale(), затем вызов GetLocaleInfo со всеми возможными параметрами, касающимися языка.
    GetLocaleInfo возвращает только язык по умолчанию, который установлен в регионал сеттингс.

    2) GetUserDefaultUILanguage -- тож возвращает только язык по умолчанию, который установлен в регионал сеттингс.
     
  2. slow_at_work

    slow_at_work New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2007
    Сообщения:
    64
    Не туда смотрите...
    Вам, очевидно, нужна функция:
    GetKeyboardLayoutName
     
  3. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Супер! Работает!
    Вот только возвращает в виде 00000409, 00000419. Может ты еще знаеш АПИшку для конверта сего ИД в нормальное название типа "EN" или "RU"? А то не хочется заводить таблицу у себя в проге...
     
  4. slow_at_work

    slow_at_work New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2007
    Сообщения:
    64
    Я немного наврал...
    GetKeyboardLayout с нулем возвращает идентификатор раскладки для текущего потока
    GetKeyboardLayoutNameA - возвращает читабельное имя (в виде указателя на PAnsiChar)