1 / 1 / 0
Регистрация: 05.11.2011
Сообщений: 14
|
||||||
1 | ||||||
.NET 4.x Не во всех программах определяется язык ввода20.02.2014, 09:43. Показов 1006. Ответов 4
Метки нет (Все метки)
Здравствуйте!
Подскажите, пожалуйста, у меня лыжи не той системы или это виндовс такой классный? В одном приложении, пользуюсь небезызвестной конструкцией, чтобы определять язык ввода
И в консольных программах (cmd, far итд) определение не работает всегда, с любой раскладкой определяет 67699721. Куда можно копнуть?
1
|
20.02.2014, 09:43 | |
Ответы с готовыми решениями:
4
Русский язык в некоторых программах не отображается Не воспринимается русский язык в отдельных программах Казахский язык в программах отображается не правильно Во всех программах для записи видео плохая картинка во всех играх + сильно смазывает картинку |
Master of Orion
|
|||||||||||
22.02.2014, 01:17 | 2 | ||||||||||
медведко,
Что касается остального, тут это обсуждалось: GetKeyboardLayout() всегда возвращает ангийскую раскладку Добавлено через 7 минут медведко, дарю:
0
|
1 / 1 / 0
Регистрация: 05.11.2011
Сообщений: 14
|
|
22.02.2014, 06:32 [ТС] | 3 |
К сожалению, в данной теме ответ
"а вот ИЕ(например) анг возвращает там надо глубже копнуть перед тем как раскладку определять" мягко говоря, не приблежает к решению Я и сам понимаю, что надо глубже копнуть. Если с потоками более-менее объяснимо, видимо надо ещё и активный поток найти. Но почему консоль всегда дефолтную раскладку возвращает - совсем неясно. По лишним перекодировкам в string спасибо, учту. Португальский, албанский и прочее в нашей конторе не используется, так что смысла нет. Проще будет в случае чего ещё одну добавить.
0
|
Master of Orion
|
|||||||||||
22.02.2014, 11:36 | 4 | ||||||||||
медведко, ну гуглить придется, я ответа точно также не знаю, что знал - сказал.
0
|
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 4
|
||||||
16.05.2014, 12:11 | 5 | |||||
Здравия желаю. Всё ещё эпизодически возвращаюсь к данной проблеме
Стало понятно, с помощью spy++, что в IE разные потоки обслуживают разные поля ввода, а GetForegroundWindow возвращает всегда то, что с URL. Прикрутил, вроде как, GetGUIThreadInfo и теперь определяю handle нужного треда. Через spy++ проверил, что это номера реальных потоков IE. Но почему-то теперь GetKeyboardLayout всегда возвращает ноль вместо раскладки этого потока. Что делать, как быть?
Усё, победил (топикстартер это я). Общеизвестный код из первого сообщения кривой Правильно это: выяснить handle потока имеющего ввод с помощью GetGUIThreadInfo (а не GetForegroundWindow) потом с помощью GetWindowThreadProcessId выяснить handle потока-родителя и уже на этот handle натравливать GetKeyboardLayout Если второй шаг не сделать, то возвращает вместо раскладки ноль. Я думаю, такое злое разбиение на потоки полей ввода не только в IE бывает, но и в любой более-менее сложной программе.
0
|
16.05.2014, 12:11 | |
16.05.2014, 12:11 | |
Помогаю со студенческими работами здесь
5
Как перейти на русский язык в Dos'овских программах? Английский язык для окна ввода пароля, русский язык для самой системы Ошибки 0xc0000005 почти на всех программах Информация о всех компонентах и установленных программах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |