Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2009, 16:05   #1
Василий
Пользователь
 
Регистрация: 26.10.2007
Сообщений: 34
По умолчанию Определить раскладу в чужом приложении.

программа переключается в другое приложение и набирает там текст (имитцией нажатия клавиш на клаве)

1) мне нужно знать какой язык сейчас стоит в этом приложении и
2) как поменять раскладку в нем же
какие функции можно использовать?

PS мне надо поменять раскладку не в своем, а в другом приложении
Василий вне форума Ответить с цитированием
Старый 01.01.2009, 16:24   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
1) мне нужно знать какой язык сейчас стоит в этом приложении и
Узнать раскладку с любом активном окне можно так:
Код:
if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) = 67699721 then
//раскладка английская
else
//раскладка НЕ английская, например 68748313 соответствует русской
Цитата:
2) как поменять раскладку в нем же
какие функции можно использовать?
Изменить раскладку можно так:
Код:
Procedure SetLayoutActiveWndRu;//установка русской раскладки
Var
Layout: HKL;
HWindow: THandle;
Begin
HWindow:=GetForegroundWindow;
Layout:=68748313;
SendMessage(HWindow, WM_INPUTLANGCHANGEREQUEST, 1, Layout);
End;
...
Procedure SetLayoutActiveWndEn;//Установка английской раскладки
Var
Layout: HKL;
HWindow: THandle;
Begin
HWindow:=GetForegroundWindow;
Layout:=67699721;
SendMessage(HWindow, WM_INPUTLANGCHANGEREQUEST, 1, Layout);
End;
Всегда рад помочь!

Последний раз редактировалось Terran; 01.01.2009 в 16:26.
Terran вне форума Ответить с цитированием
Старый 01.01.2009, 16:28   #3
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

1)узнаем
var
s: array [0..63] of char;
begin
GetKeyboardLayoutName(s);
Form1.Caption := s;
end;


2) меняем
Layout: array [0.. KL_NAMELENGTH] of char;
.....
LoadKeyboardLayout(StrCopy(Layout, '00000419'), KLF_ACTIVATE); // Русс.
LoadKeyboardLayout(StrCopy(Layout, '00000409'), KLF_ACTIVATE);// англ.

Вроди работает для всей ОС, включая активные приложения.
PS: Может в программе стоит принудительное изменение языка ввода допусти по ТАЙМЕРУ ?
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 02.01.2009, 21:30   #4
Василий
Пользователь
 
Регистрация: 26.10.2007
Сообщений: 34
По умолчанию

2Terran спасибо!
Василий вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Drag n Drop объект в чужом окне ShiSha_34 Win Api 8 09.11.2010 02:19
Как заставить компонент находящийся в чужом приложении, показывать HINT (подсказку)??? DEXXX Win Api 5 16.02.2009 11:59
Среди 20 введёных чисел определить чётные, распечатать их, определить min Spade Помощь студентам 4 15.06.2008 18:39
как написать текст в чужом окне мандарин Win Api 2 11.06.2007 11:11
Как прочесть текст в чужом окне? ffo Win Api 3 27.04.2007 13:50