Головна » C++ Builder: Переключение раскладки клавиатуры

C++ Builder: Переключение раскладки клавиатуры

Естественно, самый простой вариант переключить раскладку клавиатуры – воспользоваться значком, расположенным на Панели задач. Или нажать комбинацию клавиш Alt+Shift, а может Ctrl+Shift, в зависимости от настроек системы.

Но мы ведь не ищем легких путей, так что будем переключать раскладку клавиатуры при помощи приложения созданного в среде C++ Builder.

Реализовать данную фишку в программе довольно просто, к примеру, можно так:

LoadKeyboardLayout("00000409", KLF_ACTIVATE);	//английская раскладка
LoadKeyboardLayout("00000419", KLF_ACTIVATE);	//русская раскладка

Пример использования ниже:

#include 
#pragma hdrstop

#include "Unit1.h"
//--------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//--------------------------------------------------------------

void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
 LoadKeyboardLayout("00000419", KLF_ACTIVATE);        
}
//--------------------------------------------------------------

void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
 LoadKeyboardLayout("00000409", KLF_ACTIVATE);
}

Созданная форма приведена на рисунке.

Результат работы приложения

Архив с программой можно скачать здесь.

femil

49 коментарів до “C++ Builder: Переключение раскладки клавиатуры

  1. прикольно.
    полезная иформация, можно будет попробывать. посмотрим что получиться.
    а всетаки привычней переключать язык с помощью клавиатуры…

  2. спасибо, язык принудительно переключился, но только у меня при вводе текста теперь он вводится как-то туго, каждая буква с “задержкой” где-то в секунду, если убираю эту строку кода, то снова английский по умолчанию, и вводится все ок

    1. а вы когда запускаете приложенный проект получаете тот же результат (задержку)? – У меня вводится с нормальной скоростью. Кстати, а какая у вас операционная система (ну и версия билдера)?

    1. Код казахского языка – 0000043f
      Проверьте.
      На будущее: все эти значения хранятся в реестре системы – можно легко заглянуть и посмотреть (вам даже проще – не придется такую раскладку добавлять)))

      UPD
      А код украинского – 00000422
      Извините, сразу перепутала )))

  3. я вот недавно начала пользоваться Apple. для переключения раскладки использую клавиши комманд с пробелом. Но очень часто с первого нажатия не переключается. Может кто подскажет почему это происходит? Подойдет ли для эпла эта программа?

    1. Точно так же. Только вместо радиокнопки исходящим потоком (cout) задавать вопрос и получать ответ через (cin).
      Вы столкнулись с какой-то конкретной проблемой при реализации?

Залишити відповідь