Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2011, 10:22   #1
YourLastSong
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 75
По умолчанию Как сменить раскладку клавиатуры

Здравствуйте, уважаемые господа.

Каким образом можно сменить раскладку клавиатуры в консольном приложении?

Пробовал таким образом:

LoadKeyboardLayout ("00000409", KLF_ACTIVATE | KLF_SETFORPROCESS);

Ставил также "00010409" и "00020409".

Раскладка появляется в списке доступных, но активной не становится.

Почему?

Пробовал также ActivateKeyboardLayout.

Что не так?

Заранее благодарю за возможные ответы.
YourLastSong вне форума Ответить с цитированием
Старый 17.12.2011, 15:16   #2
YourLastSong
Пользователь
 
Регистрация: 12.12.2010
Сообщений: 75
По умолчанию

Почему-то не работает даже проверка на то, какая именно раскладка стоит у пользователя в данный момент.

Насколько я понял, делать это надо при помощи функции GetKeyboardLayout.

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

В качестве единственного параметра функции передаю значение 0, т.к. мне необходимо узнать раскладку именно для текущего потока.

Читаем MSDN:

Цитата:
Return value

The return value is the input locale identifier for the thread. The low word contains a Language Identifier for the input language and the high word contains a device handle to the physical layout of the keyboard.
Следовательно, делаю так:

HKL hk = GetKeyboardLayout (0);
int lang = LOWORD (hk);

Теперь смотрим сюда:

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Для русской раскладки значение должно быть равно 0x0419.

Следовательно, делаем проверку в программе:

if (lang == 0x0419)
{
...
}

Однако условие будет выполняться в любом случае, даже если раскладка клавиатуры в данный момент стоит англ.

Что я делаю не так?
YourLastSong вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Менять раскладку клавиатуры програмно Dark_Wolf Общие вопросы Delphi 0 07.11.2011 00:52
Изменить язык ввода (раскладку клавиатуры) при получении фокуса полем SMShrek Microsoft Office Access 4 04.07.2011 09:42
Вывести на канву раскладку клавиатуры phphel Общие вопросы Delphi 7 06.04.2011 13:02
Переключить раскладку клавиатуры. SKYLINEGTR Помощь студентам 2 02.02.2011 00:50
как сменить ник ??? maladoy О форуме и сайтах клуба 12 07.02.2009 19:45