Форум: "WinAPI";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
ВнизGetKeyboardLayoutList Найти похожие ветки
← →
chikavladimir (2003-07-03 13:31) [0]UINT GetKeyboardLayoutList(
int nBuff , // size of buffer in array element
HKL FAR *lpList // buffer for keyboard layout handles
);
← →
Axis_of_Evil (2003-07-03 13:37) [1]офигигигигительно, а мы-то не знали :>
← →
Игорь Шевченко (2003-07-03 13:37) [2]
procedure TfMain.MyEnumKeyboardLocales ();
type
THKLArray = array[0..255] of HKL;
PHKLArray = ^THKLArray;
var
I, NLocales, Locale : Cardinal;
Buffer : Pointer;
begin
Buffer := nil;
NLocales := GetKeyboardLayoutList(0, Buffer^);
if NLocales > 0 then begin
GetMem(Buffer, NLocales * SizeOf(HKL));
try
GetKeyboardLayoutList(NLocales, Buffer^);
for I:=0 to Pred(NLocales) do begin
Locale := LOWORD(PHKLArray(Buffer)^[I]);
KeyboardLayoutsListBox.Items.AddObject(
HSGetLocaleLanguageName(Locale), TObject(Locale));
end;
finally
FreeMem(Buffer, NLocales * SizeOf(HKL));
end;
end;
end;
{ Для определения языка в NT-системах предпочтительней вызывать Unicode-версию
GetLocaleInfo }
function HSGetLocaleLanguageName (Locale : Cardinal) : String;
var
tmp : array[0..255] of char;
tmpW : array[0..255] of WideChar;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then begin
GetLocaleInfoW(Locale, LOCALE_SLANGUAGE, tmpW, SizeOf(tmpW));
Result := WideCharToString(tmpW);
end else begin
( Locale, LOCALE_SLANGUAGE, tmp, SizeOf(tmp)
procedure TfMain.MyEnumKeyboardLocales ();
type
THKLArray = array[0..255] of HKL;
PHKLArray = ^THKLArray;
var
I, NLocales, Locale : Cardinal;
Buffer : Pointer;
begin
Buffer := nil;
NLocales := GetKeyboardLayoutList(0, Buffer^);
if NLocales > 0 then begin
GetMem(Buffer, NLocales * SizeOf(HKL));
try
GetKeyboardLayoutList(NLocales, Buffer^);
for I:=0 to Pred(NLocales) do begin
Locale := LOWORD(PHKLArray(Buffer)^[I]);
KeyboardLayoutsListBox.Items.AddObject(
HSGetLocaleLanguageName(Locale), TObject(Locale));
end;
finally
FreeMem(Buffer, NLocales * SizeOf(HKL));
end;
end;
end;
{ Для определения языка в NT-системах предпочтительней вызывать Unicode-версию
GetLocaleInfo }
function HSGetLocaleLanguageName (Locale : Cardinal) : String;
var
tmp : array[0..255] of char;
tmpW : array[0..255] of WideChar;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then begin
GetLocaleInfoW(Locale, LOCALE_SLANGUAGE, tmpW, SizeOf(tmpW));
Result := WideCharToString(tmpW);
end else begin
GetLocaleInfo(Locale, LOCALE_SLANGUAGE, tmp, SizeOf(tmp));
Result := tmp;
end;
end;
← →
Игорь Шевченко (2003-07-03 13:38) [3]Просьба - задавать вопрос нормально, чтобы всем все было понятно. В противном случае вопрос будет удаляться.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c