![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Раскладка клавиатуры [D7, WinXP]
Dmitry_04 © (2004-11-24 03:15:00)Как мне узнать раскладку клавиатуры в коротком виде? Например русский - RU, английский - EN. Т.е. как выводится в трее...
А еще функция GetKeyboardLayout как-то не понятно работает...
так GetKeyboardLayout(Handle) - всегда 0 выдает, а так GetKeyboardLayout(0) - какое-то число...
По идее она должна выдавать числа такие как в реестре
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts
Помогите мне!
Игорь Шевченко (2004-11-24 11:34:00) [1]
> Как мне узнать раскладку клавиатуры в коротком виде? Например
> русский - RU, английский - EN. Т.е. как выводится в трее...
http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip
Leonid Troyanovsky (2004-11-24 11:28:00) [2]
> 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.
Bobby Digital (2004-11-24 03:29:00) [3]то я не внимательно прочитал .. не общай внимания на 1 коммент
Bobby Digital (2004-11-24 03:28:00) [4]блин ... ну пусть число 1 - рус а число 2 - англ. ... поставь условие если возвращается 1 то заменяй на RU, если 2 на EN
Dmitry_04 (2004-11-24 03:24:00) [5]ой... там не в трее, а в реесте
Dmitry_04 (2004-11-24 03:23:00) [6]Забыл еще сказать... надо это сделать для всех языков... Наверняка какая-то функция должна считывать какое-то число, а потом по этому числу в трее узнать какой язык и его сокращение...