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

Вниз

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

 
Dmitry_04   (2004-11-24 03:15) [0]

Как мне узнать раскладку клавиатуры в коротком виде? Например русский - RU, английский - EN. Т.е. как выводится в трее...

А еще функция GetKeyboardLayout как-то не понятно работает...
так GetKeyboardLayout(Handle) - всегда 0 выдает, а так GetKeyboardLayout(0) - какое-то число...
По идее она должна выдавать числа такие как в реестре

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts

Помогите мне!


 
Dmitry_04   (2004-11-24 03:23) [1]

Забыл еще сказать... надо это сделать для всех языков... Наверняка какая-то функция должна считывать какое-то число, а потом по этому числу в трее узнать какой язык и его сокращение...


 
Dmitry_04   (2004-11-24 03:24) [2]

ой... там не в трее, а в реесте


 
Bobby Digital ©   (2004-11-24 03:28) [3]

блин ... ну пусть число 1 - рус а число 2 - англ. ... поставь условие если возвращается 1 то заменяй на RU, если 2 на EN


 
Bobby Digital ©   (2004-11-24 03:29) [4]

то я не внимательно прочитал .. не общай внимания на 1 коммент


 
Leonid Troyanovsky   (2004-11-24 11:28) [5]


> Dmitry_04   (24.11.04 03:15)  
> Как мне узнать раскладку клавиатуры в коротком виде? Например
> русский - RU, английский - EN. Т.е. как выводится в трее...
>
> А еще функция GetKeyboardLayout как-то не понятно работает...
> так GetKeyboardLayout(Handle) - всегда 0 выдает, а так GetKeyboardLayout(0)
> - какое-то число...


{Form1 with OnCreate,  ListBox1 with OnClick}

procedure GetKLList(List: TStrings);
var
 AList : array [0..9] of Hkl;
 AklName: array [0..2] of Char;
 i: Longint;
begin
 List.Clear;
 for i := 0 to GetKeyboardLayoutList(SizeOf(AList), AList)-1 do
   begin
     GetLocaleInfo( LoWord(AList[i]),
                    LOCALE_SABBREVLANGNAME,
                    AklName,
                    SizeOf(AklName));
     List.AddObject(AklName, Pointer(AList[i]));
   end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 GetKLList(ListBox1.Items);
 ListBox1.ItemIndex := 0;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
 with Sender as TListBox do
   ActivateKeyboardLayout(Hkl(Items.Objects[ItemIndex]), 0);
end;


Ну, а GetKeyboardLayout возвращает hkl

 case GetKeyboardLayout( GetWindowThreadProcessID(
                         GetForegroundWindow,
                         nil)) and $3FF of
   LANG_ENGLISH: Caption := "EN";
   LANG_RUSSIAN: Caption := "RU";
 end;


--
С уважением, LVT.


 
Игорь Шевченко ©   (2004-11-24 11:34) [6]


> Как мне узнать раскладку клавиатуры в коротком виде? Например
> русский - RU, английский - EN. Т.е. как выводится в трее...


http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip



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

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

Наверх




Память: 0.46 MB
Время: 0.035 c
14-1103553331
frEE)stylEr
2004-12-20 17:35
2005.01.09
ПРОБЛЕМЫ с модемом!!!!


1-1103637773
Dmitrij_K
2004-12-21 17:02
2005.01.09
Как сравнить две Variant переменные


1-1103715240
12345
2004-12-22 14:34
2005.01.09
программная реализация передаточной функции


1-1103794109
ks13
2004-12-23 12:28
2005.01.09
Запуск приложения


9-1095079255
maxz
2004-09-13 16:40
2005.01.09
Помогите найти файлы!





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