Главная страница
    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
4-1101218492
snake1977
2004-11-23 17:01
2005.01.09
Активность кнопки


14-1103144516
Genial
2004-12-16 00:01
2005.01.09
люди, мне нужно написать библиотеку..


14-1103707033
Hypercube
2004-12-22 12:17
2005.01.09
Программы как исполняемая информация


14-1103294319
Nat
2004-12-17 17:38
2005.01.09
Работа для программиста Delphi.


4-1101295677
ocean
2004-11-24 14:27
2005.01.09
Как сделать "Ctrl+V" в чужом приложении?





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