Главная страница
    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.44 MB
Время: 0.005 c
1-35298
Slavik_D
2002-07-29 15:02
2002.08.12
Как поменять цвет TabSheet.Highlited


1-35247
Shil
2002-07-30 18:12
2002.08.12
Проблема с аттачем with indy


3-35164
jim
2002-07-22 15:14
2002.08.12
ApplyUpdates в ClientDataSet


1-35294
basic
2002-07-29 12:51
2002.08.12
RxLib 5


3-35194
Студент заочник
2002-07-23 11:02
2002.08.12
две таблицы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский