Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.12;
Скачать: CL | DM;

Вниз

Переключение раскладки клавиатуры в другом приложении.   Найти похожие ветки 

 
bmai   (2002-06-05 04:31) [0]

Приветствую всех
Вопрос передачи символов в другое приложение тут много раз обсуждался, но есть одна его сторона, которая не затрагивалась (ну либо я не достаточно усердно искал).
Мне понадобилось временно переключить раскладку клавиатуры в другом приложении, в которое мое посылает "нажатия клавиш".
Считываю и запоминаю текущую раскладку так:
tid := GetWindowThreadProcessID(Wnd, @pid);
myhkl := GetKeyboardLayout(tid) And $FFFF;


Требуется что-то типа SetKeyboardLayout(tid, myhkl), а такой функции нет. Кто-нибудь может предложить чем ее заменить?

На данный момент посылаю эмуляцию нажатия Ctrl-Shift и Alt-Shift до тех пор, пока не "дощелкаю" до нужного языка, но от такого способа за свою программу делается стыдно. :)

Заранее спасибо.


 
bmai   (2002-06-05 06:47) [1]

Только что обнаружил рассмотренный 2 недели назад аналогичный вопрос и попробовал вариант
kl:=LoadKeyboardLayout("00000419",KLF_ACTIVATE);
Sendmessage(GetActiveWindow, WM_INPUTLANGCHANGE, 0, kl);

Не знаю, опробовали ли его перед тем как советовать, но по крайней мере у меня и под XP и под W2K переключается раскладка в моем же приложении, а не в другом. Все перепробовал, и sleep ставил после активизации другого окна, перед SendMessage, и даже делал
While (GetActiveWindow <> myHndl) do
Application.ProcessMessages;

где myHndl - тот самый handle, по которому я делаю другое приложение активным.
Ничего не помогает.


 
sizmrebi ©   (2002-06-05 08:31) [2]

ActivateKeyboardLayout();


 
bmai   (2002-06-05 16:02) [3]

2sizmrebi
Делал уже. Тот же эффект - под W2K переключает в окне моей программы, а не в той, которая активна в данный момент.



Страницы: 1 вся ветка

Текущий архив: 2002.08.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
3-35203
kalliopiy
2002-07-23 14:00
2002.08.12
Автоинкрементное поле


4-35521
tretmike
2002-06-05 12:35
2002.08.12
Как удалить только одну из кнопок Minimize/Restore из заголовка


3-35163
Sibiryak
2002-07-22 07:58
2002.08.12
проблемы с инсертом(+)


3-35134
RDA
2002-07-20 20:24
2002.08.12
Простой вопрос


7-35470
vlad_ri
2002-05-17 15:13
2002.08.12
Матричный принтер, режим