Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Переключение раскладки клавиатуры / 6 сообщений из 6, страница 1 из 1
03.07.2007, 16:57
    #34635708
x-a
x-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение раскладки клавиатуры
Приветствую! Подскажите, пожалуйста, какое событие надо передать окну с помощью SendMessage(..), чтобы в нем поменять раскладку клавиатуры (например, с русского на англ., подразумевается)?
...
Рейтинг: 0 / 0
03.07.2007, 17:34
    #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
04.07.2007, 10:22
    #34636917
x-a
x-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение раскладки клавиатуры
Спасибо, но мне надо переключить язык в другом процессе. Вроде, надо как-то загрузить хендл раскладки другого процесса и переключить. Никто не сталкивался?
...
Рейтинг: 0 / 0
04.07.2007, 17:43
    #34638979
pandrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение раскладки клавиатуры
x-aСпасибо, но мне надо переключить язык в другом процессе. Вроде, надо как-то загрузить хендл раскладки другого процесса и переключить. Никто не сталкивался?
Программное переключение раскладки имеет смысл:
1) если на экране форма и ожидается ввод от юзера - тогда преключаем в событии OnActivate
2) при копировании на клипборд русского текста не в Unicode.
Когда и зачем вам еще это нужно?
...
Рейтинг: 0 / 0
06.07.2007, 18:48
    #34644867
Macks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переключение раскладки клавиатуры
pandrew x-aСпасибо, но мне надо переключить язык в другом процессе. Вроде, надо как-то загрузить хендл раскладки другого процесса и переключить. Никто не сталкивался?
Программное переключение раскладки имеет смысл:
1) если на экране форма и ожидается ввод от юзера - тогда преключаем в событии OnActivate
2) при копировании на клипборд русского текста не в Unicode.
Когда и зачем вам еще это нужно?

В форме ввода другой программы.
Например Notepad.exe
...
Рейтинг: 0 / 0
10.07.2007, 15:14
    #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
Форумы / C++ [игнор отключен] [закрыт для гостей] / Переключение раскладки клавиатуры / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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