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

Вниз

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

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

Наверх




Память: 0.47 MB
Время: 0.014 c
14-1663
Anatoly Podgoretѕky
2003-08-12 14:16
2003.09.01
Просьба заделать эту дырку.


1-1470
col-isaev
2003-08-18 13:42
2003.09.01
ListView


7-1695
Chieftain
2003-06-18 18:26
2003.09.01
Есть *.vxd - файл. Как заставить систему видеть *.vxd файл?


14-1618
Calm
2003-08-13 09:01
2003.09.01
Атака на форум - террор в инете. Предлагаю способ защиты.


1-1363
Fog
2003-08-19 17:00
2003.09.01
EListError при обращении к TToolBar.Buttons