• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Помогите с распознованием введённого текста

  • Автор темы Rendll
  • Дата начала
R

Rendll

Уважаемые программисты, подскажите как сделать контроль раскладки клааивтуры. У меня есть программма текстовый редактор, в ней нужно сделать возможность отображать язык ввода текущего текста. Тоесть мы вводим в Richedit текст, буквы, и во время того как вводим, оно в статус баре или в одельном поле выводит текущий язык ввода. Пожалуйсто в примерах еси можна. И если возможно, то сделать переключатель языка, русс--> англ.
 
P

Poseidon

если возможно, то сделать переключатель языка, русс--> англ
Возможно

Код:
function ChangeLayout(LANG: Integer): Boolean;
var
Layouts: array [0..16] of HKL;
i, Count: Integer;
begin
Result:=False;
Count:=GetKeyboardLayoutList(High(Layouts)+1, Layouts)-1;
for i:=0 to Count do if (LoWord(Layouts[i]) and $FF) = LANG then
Result:=ActivateKeyboardLayout(Layouts[i], 0)<>0;
end;

Использование

Код:
ChangeLayout(LANG_RUSSIAN);
ChangeLayout(LANG_ENGLISH);


Текущий язык системы можно получить так:

Код:
function WhichLanguage:string;
var 
ID: LangID;
Language: array [0..100] of char;
begin
ID := GetSystemDefaultLangID;
VerLanguageName(ID, Language, 100);
Result := string(Language);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := WhichLanguage;
end;
 
V

Vadik(R)

Poseidon, спасибо большое за код, я сам такое долго искал, потому как с функцией LoadKeyboardLayout было толку ноль. А вот узнать язык системы - не работает, всегда пишет что Русский. Хотя судя по коду это не название текущего языка, а это язык по умолчанию, возможно так оно и должно быть.
 
P

Poseidon

Так тебе нужен язык раскладки клавиатуры? Так бы и сказал.

Код:
function GetActiveKbdLayout : LongWord;
begin
result:= GetKeyboardLayout(0) shr $10;
end;

Думаю сделать ассициации возвращаемый_результат = раскладка сможешь сам.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!