Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.021 c
3-35137
Kombat
2002-07-21 14:49
2002.08.12
IB и монопольный доступ


3-35153
RDA
2002-07-18 11:15
2002.08.12
Деревья


14-35438
ricks
2002-07-05 18:48
2002.08.12
И все-таки DirectSound FX


4-35503
Yuri Btr
2002-05-31 15:01
2002.08.12
Убить приложение зная только его исполняемый файл


4-35510
Poirot
2002-06-04 20:11
2002.08.12
Элементы диалогов (см res файл)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский