Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.09;
Скачать: CL | DM;

Вниз

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

 
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 вся ветка

Текущий архив: 2005.01.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
4-1101113153
Суслик
2004-11-22 11:45
2005.01.09
Ориентация печатного листа


9-1095173674
Sphinx
2004-09-14 18:54
2005.01.09
Спрайты


1-1103651670
Redlord
2004-12-21 20:54
2005.01.09
как перевести ( s:= 01FA0 ) в интегер


14-1103454430
vecna
2004-12-19 14:07
2005.01.09
Посоветуйте че-нить по борьбе с pdf


8-1096741929
RoLeX2004
2004-10-02 22:32
2005.01.09
Как изменить уровень низких частот???