Как программно добавить в систему раскладку клавиатуры?
От: legolegs  
Дата: 15.05.06 10:00
Оценка:
Т.е. допустим есть в системе русский и английский языки. по alt+shift (ctrl+shift) можно их менять. Как программно добавить в этот список ещё один язык (например французский)? LoadKeyboardLayout и т.п. это, кажется, не то. Или у меня просто руки кривые. С русского на английский LoadKeyboardLayout меняет, на французский — хрен. Такое апи вообще есть? Или придётся в реестре напрямую править? Не хотелось бы.
Re: Как программно добавить в систему раскладку клавиатуры?
От: BlackHeretic Израиль  
Дата: 15.05.06 11:55
Оценка:
А в системе он проинтстален вообще?
ICQ 156156278
Re[2]: Как программно добавить в систему раскладку клавиатур
От: legolegs  
Дата: 15.05.06 16:30
Оценка:
Здравствуйте, BlackHeretic, Вы писали:

BH>А в системе он проинтстален вообще?

В смысле — проинстален? Ну в виндах большой список возможных раскладок. Вот если ручками — то захожу через панель управления в кливиатурные настройки и жму на добавить раскладку. Появляется список, вибираю нужную. Жму ок, и ещё раз ок. Всё, у меня стало на одну раскладку больше. Как это всё программно сделать? (если при установке нужен какой-то файл, а не только изменение реестра, то считаем что он есть)
Re[3]: Как программно добавить в систему раскладку клавиатур
От: BlackHeretic Израиль  
Дата: 15.05.06 16:42
Оценка:
Здравствуйте, legolegs, Вы писали:

L>Здравствуйте, BlackHeretic, Вы писали:


BH>>А в системе он проинтстален вообще?

L>В смысле — проинстален? Ну в виндах большой список возможных раскладок. Вот если ручками — то захожу через панель управления в кливиатурные настройки и жму на добавить раскладку. Появляется список, вибираю нужную. Жму ок, и ещё раз ок. Всё, у меня стало на одну раскладку больше. Как это всё программно сделать? (если при установке нужен какой-то файл, а не только изменение реестра, то считаем что он есть)

При вызове LoadKeyboardLayout флаг KLF_ACTIVATE установлен? Как задаете keyboard layout name в первом параметре для французской раскладки? И что за винда?
ICQ 156156278
Re[4]: Как программно добавить в систему раскладку клавиатур
От: legolegs  
Дата: 17.05.06 08:45
Оценка:
BH>При вызове LoadKeyboardLayout флаг KLF_ACTIVATE установлен? Как задаете keyboard layout name в первом параметре для французской раскладки? И что за винда?

Если делать такой вызов:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HKL r = LoadKeyboardLayout ("0000040C", KLF_ACTIVATE);
Caption = IntToStr(r);
}

то в вин 98 всё действительно устанавливается. т.е. хлоп и есть новая раскладка (и даже не исчезает после перезагрузки). Большое спасибо! Но 98 малёхо устарела , нужно чтобы в XP работало. А работает? но не до конца. Т.е. нажимаю на кнопку, в кепшн пишется код возврата 1 (как и в 98) но раскладок на панельке по-прежнему 2(рус и англ). Права админа. Но: если по индикатору языков щёлкнуть правой кнопкой и войти в "параметры", то там французский есть. И если ничего не трогая нажать ок, то новая раскладка становится доступной для переключения. Т.е. чего-то ещё не хватает. Пробовал вариант
HKL r = LoadKeyboardLayout ("0000040C", KLF_ACTIVATE | KLF_REORDER);
Caption = IntToStr(r);
ActivateKeyboardLayout(r, 0);

никаких изменений.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.