Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > сменить язык ввода для системы (или чужого окна)


Автор: alexcustov 3.1.2013, 17:58
Для чужого окна отправляется английский текст через SendInput(). Всё работет до тех пор, пока пользователь не сменит язык ввода в том окне через Ctrl+Shift на русский. Как с помощью Win32 API можно вернуть язык ввода на английский для известного чужого HWND (или process id)?

Автор: feodorv 3.1.2013, 19:37
SetThreadLocale может помочь.

Цитата(alexcustov @  3.1.2013,  18:58 Найти цитируемый пост)
Всё работет до тех пор, пока пользователь не сменит язык ввода в том окне через Ctrl+Shift на русский.

А что при этом перестаёт работать?

Автор: alexcustov 3.1.2013, 19:57
Цитата(feodorv @  3.1.2013,  19:37 Найти цитируемый пост)
А что при этом перестаёт работать? 


Тект приходит на русском языке согласно раскладки клавиатуры ("tr" приходит как "ек"), мне нужно всегда на английском.

Автор: feodorv 3.1.2013, 20:40
Цитата(alexcustov @  3.1.2013,  20:57 Найти цитируемый пост)
Тект приходит на русском языке согласно раскладки клавиатуры ("tr" приходит как "ек")

Любопытно. А AttachThreadInput Вы делали?

Автор: alexcustov 4.1.2013, 00:06
Цитата(feodorv @ 3.1.2013,  20:40)
Цитата(alexcustov @  3.1.2013,  20:57 Найти цитируемый пост)
Тект приходит на русском языке согласно раскладки клавиатуры ("tr" приходит как "ек")

Любопытно. А AttachThreadInput Вы делали?

Вопрос можно считать решённым. Сперва переделал с AttachThreadInput+ActivateKeyboardLayout, это заработало, но в итоге остановился на варианте без использования ActivateKeyboardLayout, а с AttachThreadInput+SendMessage(WM_INPUTLANGCHANGEREQUEST)

Автор: Dem_max 4.1.2013, 17:45
Цитата

Функция ActivateKeyboardLayout устанавливает язык ввода для текущего потока

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)