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

Вниз

Раскладка клавиатуры   Найти похожие ветки 

 
SeregaMan   (2005-01-17 12:11) [0]

Доброго всем времени суток!
Подскажите пожалуйста, как мне узнать текущий язык раскладки клавиатуры и способ изменения его на нужный мне?
Заранее благодарен!


 
MBo ©   (2005-01-17 12:29) [1]

А как насчет в FAQ порыться?


 
Developerr   (2005-01-17 13:23) [2]

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение раскладки клавиатуры

5 функций для получения/установки раскладки клавиатуры в своем или активном в текущий момент времени приложении:

function NameKeyboardLayout(layout : LongWord) : string;
Получает название раскладки из списка (для удобства сделал :)))

function GetActiveKbdLayout : LongWord;
Получает раскладку в своей программе

function GetActiveKbdLayoutWnd : LongWord;
Получает раскладку в активном окне

procedure SetKbdLayout(kbLayout : LongWord);
Устанавливает раскладку в своей программе

procedure SetLayoutActiveWnd(kbLayout : LongWord);
Устанавливает раскладку в активном окне

Зависимости: Windows, Messages
Автор:       savva, savva@nm.ru, ICQ:126578975, Орел
Copyright:   Сапронов Алексей (Savva)
Дата:        27 июня 2002 г.
***************************************************** }

{типы описываем }
const
 CNT_LAYOUT = 2; // количество известных раскладок
 ENGLISH = $409;
 RUSSIAN = $419;

 TKbdValue : array [1..CNT_LAYOUT] of LongWord =
               ( ENGLISH,
                 RUSSIAN
               );
 TKbdDisplayNames : array [1..CNT_LAYOUT] of string =
               ("English",
                "Русский"
               );

{----- собственно сами процедури и функции -----}
 
{получаем название раскладки}
function NameKeyboardLayout(layout : LongWord) : string;
var
 i: integer;
begin
 Result:="";
 try
   for i:=1 to CNT_LAYOUT do
     if TKbdValue[i]=layout then Result:= TKbdDisplayNames[i];
 except
   Result:="";
 end;
end;
//**************** end of NameKeyboardLayot ***************************
{активная раскладка в своей программе}
function GetActiveKbdLayout : LongWord;
begin
 result:= GetKeyboardLayout(0) shr $10;
end;
//***************** end of GetActiveKbdLayot ****************************
{активная раскладка в активном окне}
function GetActiveKbdLayoutWnd : LongWord;
var
 hWindow,idProcess : THandle;
begin
 // получить handle активного окна чужой программы
 hWindow := GetForegroundWindow;
 // Получить идентификатор чужого процесса
 idProcess := GetWindowThreadProcessId(hWindow,nil);
 // Получить текущую раскладку в чужой программе
 Result:=(GetKeyboardLayout(idProcess) shr $10);
end;
//***************** end of GetActiveKbdLayotWnd **************************
{установить раскладку в своей программе}
procedure SetKbdLayout(kbLayout : LongWord);
var
 Layout: HKL;
begin
 // Получить ссылку на раскладку
 Layout:=LoadKeyboardLayout(PChar(IntToStr(kbLayout)), 0);
 // Переключить раскладку на русскую
 ActivateKeyboardLayout(Layout,KLF_ACTIVATE);
end;
//****************** end of SetKbdLayot **********************************
{установить раскладку в активном окне}
procedure SetLayoutActiveWnd(kbLayout : LongWord);
var
 Layout: HKL;
 hWindow{, idProcess} : THandle; // ION T: не используется
begin
 // получить handle активного окна чужой программы
 hWindow := GetForegroundWindow;
 // Получить ссылку на раскладку
 Layout:=LoadKeyboardLayout(PChar(IntToStr(kbLayout)), 0);
 // посылаем сообщение о смене раскладки
 sendMessage(hWindow,WM_INPUTLANGCHANGEREQUEST,1,Layout);
end;
//***************** end of SetLayoutActiveWnd *****************************

Пример использования:

...
 {активная раскладка в активном окне}
   Label1.Caption:= NameKeyboardLayout(GetActiveKbdLayoutWnd);
 {активная раскладка в своей программе}
   Label2.Caption:= NameKeyboardLayout(GetActiveKbdLayout);
 {установить раскладку в своей программе}
   SetKbdLayout(ENGLISH);
 {установить раскладку в активном окне}
   SetLayoutActiveWnd(ENGLISH);
...


 
SeregaMan   (2005-01-17 15:37) [3]

А как узнать код, допустим для украиской раскладки?


 
Fay ©   (2005-01-17 15:43) [4]

00000422



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

Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.033 c
1-1105984614
Aleks
2005-01-17 20:56
2005.01.30
Как програмно скачать из интернета заданный файл


4-1102700725
zioza
2004-12-10 20:45
2005.01.30
Сменить раскладку клавиатуры, другому активному окну


14-1105487402
pika
2005-01-12 02:50
2005.01.30
Готов ли ты это сделать !!!


6-1100142838
Aleks_Grey
2004-11-11 06:13
2005.01.30
Вопрос - как достать информацию из сети?


14-1105389929
palva
2005-01-10 23:45
2005.01.30
Наезд на авторов толстой книги





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