Привет всем !
Возможно все просто, но что-то не как не могу найти в мсдне.
Используя GetKeyboardLayoutList получаю я список раскладок установленных в системе. Получаю разумеется идентификаторы типа 0x049049, далее мне надо вывести их пользователю для выбора, в комбобокс. Хотелось бы туда вывести строки типа руский... Как получить эти строки, собственно в этом и есть вопрос.
Здравствуйте, Begemotik, Вы писали:
B>Привет всем ! B>Возможно все просто, но что-то не как не могу найти в мсдне. B>Используя GetKeyboardLayoutList получаю я список раскладок установленных в системе. Получаю разумеется идентификаторы типа 0x049049, далее мне надо вывести их пользователю для выбора, в комбобокс. Хотелось бы туда вывести строки типа руский... Как получить эти строки, собственно в этом и есть вопрос.
HKL pkl[100];
int klcount = GetKeyboardLayoutList(100, pkl);
TCHAR klname[KL_NAMELENGTH];
for(int i=0; i<klcount; i++)
{
ActivateKeyboardLayout(pkl[i], 0);
GetKeyboardLayoutName(klname);
// здесь, зная название раскладки в виде "00000409", можно из реестра достать
// соответствующее ему строку типа "Russian"
}
Не уверен, что это самый простой способ, но на крайний случай сгодится.
Здравствуйте, Begemotik, Вы писали:
B>Привет всем ! B>Возможно все просто, но что-то не как не могу найти в мсдне. B>Используя GetKeyboardLayoutList получаю я список раскладок установленных в системе. Получаю разумеется идентификаторы типа 0x049049, далее мне надо вывести их пользователю для выбора, в комбобокс. Хотелось бы туда вывести строки типа руский... Как получить эти строки, собственно в этом и есть вопрос.
Похоже, надо быстренько пробежаться по списку при помощи ActivateKeyboardLayout(), и повызывать GetKeyboardLayoutName().
... << RSDN@Home 1.0 beta 6 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Привет
>Похоже, надо быстренько пробежаться по списку при помощи ActivateKeyboardLayout(), и >повызывать GetKeyboardLayoutName().
Она возвращает код, а не название -(
S>Эту информацию можно получить из реестра S>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts
У меня (XP) там только символьные имена — ru and us, а хотелось бы полные, так как они отражаются в значке переключения языка в систрее. Ну на крайняк так сделаю если не найду другого способа.
Здравствуйте, Begemotik, Вы писали:
S>>Эту информацию можно получить из реестра S>>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts
B>У меня (XP) там только символьные имена — ru and us, а хотелось бы полные, так как они отражаются в значке переключения языка в систрее.
И в XP и в 2000-ном символьные имена сидят в ключе
B>У меня (XP) там только символьные имена — ru and us, а хотелось бы полные, так как они отражаются в значке переключения языка в систрее. Ну на крайняк так сделаю если не найду другого способа.
Поднимаю старую тему, но решить ее не могу. Как получить по идентификатору раскладки "нормальные" обозначения языка типа "RU" или "EN". Можно конечно прописать самому ручками, но тогда при появлении нового языка придется каждый раз изменять программу, а это не дело. Как сделать правильно?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Begemotik, Вы писали:
B>>У меня (XP) там только символьные имена — ru and us, а хотелось бы полные, так как они отражаются в значке переключения языка в систрее. Ну на крайняк так сделаю если не найду другого способа.
А>Поднимаю старую тему, но решить ее не могу. Как получить по идентификатору раскладки "нормальные" обозначения языка типа "RU" или "EN". Можно конечно прописать самому ручками, но тогда при появлении нового языка придется каждый раз изменять программу, а это не дело. Как сделать правильно?
Встречный вопрос — сколько ныне в год появляется новых языков?
Unknown wrote:
> Поднимаю старую тему, но решить ее не могу. Как получить по идентификатору раскладки "нормальные" обозначения языка типа "RU" или "EN". Можно конечно прописать самому ручками, но тогда при появлении нового языка придется каждый раз изменять программу, а это не дело. Как сделать правильно?
Здравствуйте, Begemotik, Вы писали:
B>Привет всем ! B>Возможно все просто, но что-то не как не могу найти в мсдне. B>Используя GetKeyboardLayoutList получаю я список раскладок установленных в системе. Получаю разумеется идентификаторы типа 0x049049, далее мне надо вывести их пользователю для выбора, в комбобокс. Хотелось бы туда вывести строки типа руский... Как получить эти строки, собственно в этом и есть вопрос.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, BlackHeretic, Вы писали:
BH>>Встречный вопрос — сколько ныне в год появляется новых языков?
А>Я не имел ввиду, что появляются новые языки, но пользователь может доставить новый язык например: DE.
Ну просто я сторонник составления таблицы всех вариантов, даже тех что не установлены. Хотя полностью согласен, что если уж есть хороший способ динамического получения — то он предпочтительнее.
То что написал sasha — в точности то что нужно