getkeyboardlayout delphi



Автор Алексей Королёв задал вопрос в разделе Другие языки и технологии

Получение текущей раскладки клавиатуры и отображение её в Label на форме. Delphi XE7. и получил лучший ответ

Ответ от Андванс Чесс[гуру]
Используйте следующие процедуры:
const
CNT_LAYOUT = 2; // количество известных раскладок
ENGLISH = $409;
RUSSIAN = $419;
TKbdValue : array [1..CNT_LAYOUT] of LongWord =
( ENGLISH,
RUSSIAN
);
TKbdDisplayNames : array [1..CNT_LAYOUT] of string =
('English',
'Русский'
);
{---процедуры и функции ---}
{получаем название раскладки}
function NameKeyboardLayout(layout : LongWord) : string;
var
i: integer;
begin
Result:='';
try
for i:=1 to CNT_LAYOUT do
if TKbdValue[i]=layout then Result:= TKbdDisplayNames[i];
except
Result:='';
end;
end;
{активная раскладка в своей программе}
function GetActiveKbdLayout : LongWord;
begin
result:= GetKeyboardLayout(0) shr $10;
end;
{активная раскладка в активном окне}
function GetActiveKbdLayoutWnd : LongWord;
var
hWindow,idProcess : THandle;
begin
// получить handle активного окна чужой программы
hWindow := GetForegroundWindow;
// Получить идентификатор чужого процесса
idProcess := GetWindowThreadProcessId(hWindow,nil);
// Получить текущую раскладку в чужой программе
Result:=(GetKeyboardLayout(idProcess) shr $10);
end;
{установить раскладку в своей программе}
procedure SetKbdLayout(kbLayout : LongWord);
var
Layout: HKL;
begin
// Получить ссылку на раскладку
Layout:=LoadKeyboardLayout(PChar(IntToStr(kbLayout)), 0);
// Переключить раскладку на русскую
ActivateKeyboardLayout(Layout,KLF_ACTIVATE);
end;
{установить раскладку в активном окне}
procedure SetLayoutActiveWnd(kbLayout : LongWord);
var
Layout: HKL;
hWindow{, idProcess} : THandle; // ION T: не используется
begin
// получить handle активного окна чужой программы
hWindow := GetForegroundWindow;
// Получить ссылку на раскладку
Layout:=LoadKeyboardLayout(PChar(IntToStr(kbLayout)), 0);
// посылаем сообщение о смене раскладки
sendMessage(hWindow,WM_INPUTLANGCHANGEREQUEST,1,Layout);
end;
Источник: codenet.ru/progr/delphi/stat/internat.php
Андванс Чесс
Просветленный
(27403)
Тебе дали ПРОСТОЙ и АККУРАТНЫЙ код, тебе нужно лишь обратиться к нужной процедуре. Если ты даже этого не можешь, то всё очень, очень плохо.
То, что ты не умеешь гуглить - полбеды, а что ты результаты поиска не умеешь использовать - уже беда настоящая.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Получение текущей раскладки клавиатуры и отображение её в Label на форме. Delphi XE7.
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*