Как узнать раскладку клавиатуры в delphi?

Пользователь

от lilla.herman , в категории: Другие , 3 года назад

Как узнать раскладку клавиатуры в delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

P

Пользователь

от Programmer , 3 года назад

@lilla.herman Приветствую!

Для определения раскладки нужно понимать что именно мы ищем, т.е. нужно знать код искомой раскладки, например 68748313 соответствует русской.


1
2
3
4
5
6
7
8
Const EN = 67699721
      RU = 68748313
...

if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) = EN then
  ShowMessage('раскладка английская');
else
  ShowMessage('раскладка НЕ английская');


Пользователь

от laney_johnson , 2 года назад

@lilla.herman 

В Delphi для получения текущей раскладки клавиатуры можно использовать функцию GetKeyboardLayoutName из модуля Windows:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
uses
  Windows;

function GetCurrentKeyboardLayout: string;
var
  kbLayout: HKL;
  kbLayoutName: array[0..KL_NAMELENGTH-1] of Char;
begin
  kbLayout := GetKeyboardLayout(0);
  GetKeyboardLayoutName(kbLayoutName);
  Result := kbLayoutName;
end;


Эта функция возвращает строку, содержащую идентификатор текущей раскладки клавиатуры, например, "00000409" для раскладки "ENG".