Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Узнать текущую раскладку клавиатуры в любом активном окне

Delphi , ОС и Железо , Язык



Автор: KosilkA
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
возвращает числовое значение соответственно установленной раскладке

Зависимости: windows
Автор:       KosilkA, gloom@imail.ru, Koenigsberg
Copyright:   delphi help и немного усердия :-)
Дата:        4 декабря 2003 г.
***************************************************** }

if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) = 67699721 then
  //раскладка английская
else
  //раскладка НЕанглийская, например 68748313 соответствует русской

Вот перевод текста на русский язык:

Это фрагмент кода на Delphi, который определяет текущий раскладка клавиатуры в активном окне. Автором этого кода является KosilkA из delphibase.endimus.com.

Код выполняет следующие действия:

  1. GetForegroundWindow возвращает handle активного окна.
  2. GetWindowThreadProcessId возвращает идентификатор процесса, связанного с потоком, владеющим указанным окном. Это используется для получения идентификатора процесса активного окна.
  3. GetKeyboardLayout возвращает идентификатор текущей раскладки клавиатуры для указанного идентификатора процесса.

Код проверяет, равен ли возвращенное значение конкретному значению (67699721), соответствующему английской раскладке клавиатуры. Если это так, код выполняет код внутри if-запроса (т.е. обнаружена английская раскладка клавиатуры).

Если возвращенное значение не равно идентификатору английской раскладки клавиатуры, код проверяет, соответствует ли оно другому конкретному значению (68748313), соответствующему русской раскладке клавиатуры. Если это так, код выполняет код внутри else-запроса (т.е. обнаружена неанглийская раскладка клавиатуры, например, русская).

Код не указывает, какие другие раскладки клавиатуры могут быть поддерживаемы или как они идентифицируются.

Вот альтернативное решение с использованием встроенной функции Delphi GetKeyboardLayoutName:

procedure TForm1.Button1Click(Sender: TObject);
var
  layoutName: string;
begin
  GetKeyboardLayoutName(layoutName);
  if layoutName = 'English' then
     // Английская раскладка клавиатуры обнаружена
  else if layoutName = 'Russian' then
     // Русская раскладка клавиатуры обнаружена
  else
     // Неизвестная или не поддерживаемая раскладка клавиатуры обнаружена
end;

В этом коде используется функция GetKeyboardLayoutName для получения имени текущей раскладки клавиатуры, а затем проверяется возвращенное значение против конкретных строк для английской и русской раскладок. Этот подход более прост и легче поддерживать, чем оригинальный код.

Статья описывает программу на языке Delphi, которая позволяет узнать текущую раскладку клавиатуры в любом активном окне Windows.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Язык ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 05:46:53/0.0033159255981445/0