Главная страница
    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.034 c
3-1102490625
LEH
2004-12-08 10:23
2005.01.09
Как лучше переносить BDE


3-1102295375
Gene Green
2004-12-06 04:09
2005.01.09
Interbase Client/Server. Срочно нужна помощь.


6-1098351026
Строгов Артем
2004-10-21 13:30
2005.01.09
Handle объекта в документе html


14-1103510809
Думкин
2004-12-20 05:46
2005.01.09
С днем рождения! 20 декабря


3-1102352248
Сергей_26
2004-12-06 19:57
2005.01.09
Вставка картинки в graphic поле таблици





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