-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


GetLocaleInfo — как различить мнемоническую раскладку клавиатуры?

Понедельник, 29 Марта 2021 г. 08:50 + в цитатник
ViH: У меня 3 раскладки клавиатуры: английская, русская (обычная) и русская (мнемоническая):

user posted image

Запускаю код:
    UINT uLayouts;
    HKL *lpList = NULL;
    wchar_t szBufLng[512], szBufCtry[512];
    uLayouts = GetKeyboardLayoutList(0, NULL);
    lpList = (HKL*)LocalAlloc(LPTR, (uLayouts * sizeof(HKL)));
    uLayouts = GetKeyboardLayoutList(uLayouts, lpList);
    for(int i = 0; i < uLayouts; ++i)
    {
    GetLocaleInfo(MAKELCID(((UINT)lpList[i] & 0xffffffff),
    SORT_DEFAULT), LOCALE_SISO639LANGNAME, szBufLng, 512);
    GetLocaleInfo(MAKELCID(((UINT)lpList[i] & 0xffffffff),
    SORT_DEFAULT), LOCALE_SISO3166CTRYNAME, szBufCtry, 512);
    wprintf(L"%s-%s, %x\n", szBufLng, szBufCtry, (UINT)lpList[i]);
    memset(szBufLng, 0, 512);
    memset(szBufCtry, 0, 512);
    }
    if(lpList)
    LocalFree(lpList);

И получаю такой результат:
en-US, 04090409
ru-RU, 04190419
ru-RU, f0330419

Подскажите, пожалуйста, как отличить мнемоническую раскладку или получить её название (Windows ведь её как-то отличил на снимке выше), чтобы получить что-то вроде этого:
en-US, 04090409
ru-RU, 04190419
rum-RU, f0330419

https://forum.sources.ru/index.php?showtopic=421292&view=findpost&p=3845784

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку