Столкнулся со странной проблемой. При помощи ф-ции UnloadKeyboardLayout выгружаю раскладку (для примера использую белорусскую), естественно заранее загруженную. Code: AnsiString dellangID = IntToHex(MAKELANGID(LANG_BELARUSIAN,SUBLANG_DEFAULT),8); HKL dellay = LoadKeyboardLayout(dellangID.c_str(),0); // определяем хендл раскладки if (GetKeyboardLayout(NULL) == dellay) // проверяем, ежели удаляемая раскладка активна - меняем ActivateKeyboardLayout((HKL)HKL_NEXT,KLF_REORDER); UnloadKeyboardLayout(dellay); // выгружаем Итого: раскладка меняется, удаляется, НО после этого что-то ломается в циклической смене раскладок. Тобишь, если раньше они менялись по кругу (за первой шла последняя, и наоборот), то теперь она вправо доходит до конца, и дальше не меняется, ну и влево то же самое. В мануалах на такое и намёка нет, ясное дело, а гугл как-то особо не помог. Может тут кто чем сможет помочь. Буду весьма благодарен. UPD: Забыл упомянуть - после перезагрузки проги всё возвращается на круги своя, что собственно логично.