| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Как узнать раскладку клавиатуры |
| Автор: YourLastSong 17.12.2011, 20:50 | ||||||||
| Здравствуйте, каким образом можно узнать, какая раскладка клавиатуры стоит у пользователя в данный момент? Насколько я понял, делать это надо при помощи функции GetKeyboardLayout. http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx В качестве единственного параметра функции передаю значение 0, т.к. мне необходимо узнать раскладку именно для текущего потока. Читаем MSDN:
Следовательно, делаю так:
Теперь смотрим сюда: http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx Для русской раскладки значение должно быть равно 0x0419. Следовательно, делаем проверку в программе:
Однако условие будет выполняться в любом случае, даже если раскладка клавиатуры в данный момент стоит англ. Кстати, когда я делаю вот так
то на экран в любом случае выводится 04190419, несмотря на то, какая именно раскладка сейчас стоит. Что я делаю не так? |
| Автор: Dem_max 18.12.2011, 05:52 | ||
Все правильно и все работает на ура. |
| Автор: artsb 18.12.2011, 15:39 |
Подтверждаю: для английской раскладки lang = 1033, для русской - 1049. |
| Автор: YourLastSong 18.12.2011, 17:43 |
| В консольном приложении проверяли или как? Меня просто именно консольное приложение интересует. |
| Автор: artsb 18.12.2011, 18:31 |
| Хм... В консоли не работает. И похоже, решения нет... http://www.rsdn.ru/forum/winapi/658469.hot.aspx |
| Автор: Dem_max 19.12.2011, 08:37 |
| тебе чисто консольное интересует или же все таки приложение multithreaded ? |
| Автор: YourLastSong 24.12.2011, 15:19 | ||
Честно говоря, не совсем понял вопроса. Приложение консольное, однако имеет неск. потоков, которые создаю самостоятельно при помощи функции _beginthread. Разве это имеет какое-то значение в данном случае вообще? Что вы подразумеваете под выражением "чисто консольное приложение"? |
| Автор: bass 24.12.2011, 20:08 |
| Есть одна идея но она тебе не понравится... Найти по названию окна ... Окошко с отображением раскладки.... Скопировать рисунок с этого окошка и сравнивать с эталонным изображением ...... |