Как yзнать текущую Ru/En pаскладкy клавиатypы
Как yзнать текущую Ru/En pаскладкy клавиатypы
Как yзнать текущую Ru/En pаскладкy клавиатypы GetKeyboardLayoutName(buffer{:array [0..KL_NAMELENGTH] of Char}); case ((StrToInt('$'+ Buffer)) and $03FF) of LANG_ENGLISH: Caption := 'Eng'; LANG_RUSSIAN: Caption := 'Rus'; end; ++++++++++++++++++++++++++++ procedure TForm1.Button1Click(Sender: TObject); var AklName: array [0..2] of Char; begin GetLocaleInfo( LoWord(GetKeyboardLayout(0)), LOCALE_SABBREVLANGNAME, AklName, SizeOf(AklName)); Caption := AklName; end; ************************************************ Отловить переключение раскладки клавиатуры private procedure WM_INPUTLANGCHANGEREQUEST(var message: TMessage); message WM_INPUTLANGCHANGEREQUEST; procedure SetEN; var Layout: array[0.. KL_NAMELENGTH] of char; begin LoadKeyboardLayout(StrCopy(Layout,'00000409'),KLF_ACTIVATE); end; procedure SetRU; var Layout: array[0.. KL_NAMELENGTH] of char; begin LoadKeyboardLayout( StrCopy(Layout,'00000419'),KLF_ACTIVATE); end; procedure TForm1.WM_INPUTLANGCHANGEREQUEST(var message: TMessage); begin inherited; SetEN; end;