Форум: "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 возвращает hklcase 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