Форум: "Система";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
ВнизТекущая раскладка клавиатуры Найти похожие ветки
← →
ASGroup (2002-06-22 23:10) [0]Как получить текущую раскладку клавиатуры
А потом из неё получить её имя (например "Английский США" ) или Название в системе (типа "00000409")
← →
Proton (2002-06-23 04:05) [1]Вообще текушая берется вот так.
const Lang_RU = $4190419;//68748313
Lang_ENG = $4090409;//67699721
begin
RxSwitch_lang.StateOn := GetKeyboardLayout(GetCurrentThreadId)=LANG_RU;
RxSwitch_caps_lock.StateOn := not GetKeyState(VK_CAPITAL) and 1 = 0;
end;
ну а имя ее вот так (только не ее а текущей)
GetKeyboardLayoutName(
Ну а вообще RTFM
← →
Юрий Зотов (2002-06-23 08:10) [2]Примерно так:
var
S: string;
...
SetLength(S, KL_NAMELENGTH + 1);
if GetKeyboardLayoutName(@S[1]) then
with TRegistry.Create do
try
RootKey := HKEY_LOCAL_MACHINE;
if OpenKeyReadOnly("\System\CurrentControlSet\Control\Nls\Locale")
then S := ReadString(S)
else S := ""
finally
Free
end
else S := "";
← →
Игорь Шевченко (2002-06-24 09:55) [3]Или так :
{
HSGetLocaleLanguageName - Определение названия языка Locale, аналогичного тому, который появляется в окне индикатора клавиатуры.
}
{ Для определения языка в NT-системах предпочтительней вызывать Unicode-версию
GetLocaleInfo }
function HSGetLocaleLanguageName (Locale : Cardinal) : String;
var
tmp : array[0..255] of char;
tmpW : array[0..255] of WideChar;
begin
if HSQuerySystemInfo(hsiNTPlatform) 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;
Имя текущей раскладки:
HSGetLocaleLanguageName(LOWORD(GetKeyboardLayout(0)));
С уважением,
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.009 c