Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.01 c
3-35141
vich
2002-07-21 17:00
2002.08.12
Программа не находит драйвер для работы с базой.


14-35405
Song
2002-07-15 18:12
2002.08.12
Приветствую, уважаемые коллеги. Отдохнулось классно.


6-35395
Donal_Graeme
2002-05-28 13:43
2002.08.12
ICMP Ping


3-35198
Prog_mail
2002-07-20 11:24
2002.08.12
Помогите с отчетом


1-35317
SemFLY
2002-07-24 01:17
2002.08.12
Заполнение текстового документа из программы...




   Наверх