powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Переключение раскладки клавиатуры
6 сообщений из 6, страница 1 из 1
Переключение раскладки клавиатуры
    #34635708
x-a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x-a
Гость
Приветствую! Подскажите, пожалуйста, какое событие надо передать окну с помощью SendMessage(..), чтобы в нем поменять раскладку клавиатуры (например, с русского на англ., подразумевается)?
...
Рейтинг: 0 / 0
Переключение раскладки клавиатуры
    #34635872
pandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
функция переключающая раскладки:
Код: plaintext
1.
2.
3.
4.
5.
int SetKeyBoard(int lang)
{   char    wszKLID[KL_NAMELENGTH];
    GetKeyboardLayoutName(wszKLID);
    ActivateKeyboardLayout(LoadKeyboardLayout(IntToHex(MAKELANGID(lang,SUBLANG_DEFAULT), KL_NAMELENGTH- 1 ).c_str(),  0 ),  0 );
    return PRIMARYLANGID(atoi(wszKLID));
}
Например, переключение на английский: SetKeyBoard(LANG_ENGLISH);
...
Рейтинг: 0 / 0
Переключение раскладки клавиатуры
    #34636917
x-a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x-a
Гость
Спасибо, но мне надо переключить язык в другом процессе. Вроде, надо как-то загрузить хендл раскладки другого процесса и переключить. Никто не сталкивался?
...
Рейтинг: 0 / 0
Переключение раскладки клавиатуры
    #34638979
pandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
x-aСпасибо, но мне надо переключить язык в другом процессе. Вроде, надо как-то загрузить хендл раскладки другого процесса и переключить. Никто не сталкивался?
Программное переключение раскладки имеет смысл:
1) если на экране форма и ожидается ввод от юзера - тогда преключаем в событии OnActivate
2) при копировании на клипборд русского текста не в Unicode.
Когда и зачем вам еще это нужно?
...
Рейтинг: 0 / 0
Переключение раскладки клавиатуры
    #34644867
Фотография Macks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pandrew x-aСпасибо, но мне надо переключить язык в другом процессе. Вроде, надо как-то загрузить хендл раскладки другого процесса и переключить. Никто не сталкивался?
Программное переключение раскладки имеет смысл:
1) если на экране форма и ожидается ввод от юзера - тогда преключаем в событии OnActivate
2) при копировании на клипборд русского текста не в Unicode.
Когда и зачем вам еще это нужно?

В форме ввода другой программы.
Например Notepad.exe
...
Рейтинг: 0 / 0
Переключение раскладки клавиатуры
    #34650613
x-a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x-a
Гость
Это надо для разрешения следующей ситуации.
Есть два окна в разных процессах. Причем одно окно является дочерним по отношению к другому. Необходимо синхронизировать для этих процессов (окон) переключение раскладки клавиатуры. Если пользователь меняет раскладку в одном окне - в другом тоже должно меняться.
Само это не происходит.
Когда получаю сообщение WM_INPUTLANGCHANGE в дочернем окне (процесс 1), посылаю в родительское окно (процесс 2) сообщение WM_MYMESSAGE, и при его получении (в процессе 2) инициирую смену раскладки с помощью ActivateKeyboardLayout( HKL_PREV, KLF_SETFORPROCESS ).
Но, тут начинается самое неприятное. Т.к. окно, в котором переключалась раскладка (процесс 1) является дочерним, то ActivateKeyboardLayout(...) посылает ему сообщение WM_INPUTLANGCHANGE. А мне это вообще не нужно.
Таким образом можно сделать так, чтобы дочерние окна в чужом процессе не получали сообщения типа WM_INPUTLANGCHANGE?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Переключение раскладки клавиатуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]