Главная страница
    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.46 MB
Время: 0.036 c
6-1099927417
MegaVolt
2004-11-08 18:23
2005.01.30
Как на сервере определить MAC клиента?


3-1104069953
NEEDHELP
2004-12-26 17:05
2005.01.30
kak sohranit jpg kartinku v bazu dannih ??


1-1106041780
COOLer
2005-01-18 12:49
2005.01.30
Помогите перевести кусок кода С++ на делфи


1-1105950102
andrey__
2005-01-17 11:21
2005.01.30
Преобразование ANSI строку в ASCII строку


11-1088887873
Deimos
2004-07-04 00:51
2005.01.30
Плоский Edit





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