320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
1

Изменить глобально раскладку клавиатуры

05.05.2013, 19:38. Показов 1787. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Я пишу функционал, который программно переключает раскладку клавиатуры. Есть два куска кода, которые нужно состыковать. Значит первый кусок (получает код текущей раскладки):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        const int KL_NAMELENGTH = 9;
        const uint KLF_ACTIVATE = 1;
 
        [DllImport("user32.dll")]
        public static extern long LoadKeyboardLayout(string pwszKLID, uint Flags);
        [DllImport("user32.dll")]
        public static extern long GetKeyboardLayoutName(System.Text.StringBuilder pwszKLID);
 
        public static string getKLName()
        {
            System.Text.StringBuilder name = new System.Text.StringBuilder(KL_NAMELENGTH);
            GetKeyboardLayoutName(name);
            return name.ToString();
        }
Функция getKLName() возвращает нам следующие значения:
EN - "00000409"
RU - "00000419"
UKR - "00000422"

Мне нужно глобально изменить раскладку программы, которая находится впереди, т.е. в фокусе.
Я нашел такой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
    [DllImport("user32.dll")]
    public static extern IntPtr GetForegroundWindow();
         
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);    
     
     private void ChangeLang(String code)
     {
 
       PostMessage(GetForegroundWindow(), 0x0050, 2, 0);
 
     }
В данном примере функция ChangeLang только переключает раскладку, ну например, стоял англ, а функция переключила на русский, затем повторный вызов переключил с русского на украинский. Есть ли какая нибудь функция в user32 , которая говорит "фокусному" приложению, какой нужен язык? Т.е. я в ChangeLang передаю код языка, и через API дернуть "что-то"?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2013, 19:38
Ответы с готовыми решениями:

Как определить раскладку клавиатуры?
Товарищи, подскажите. Как определить какая сейчас раскладка клавиатуры (рус/анг)?

Изменить раскладку клавиатуры в чужом приложении
Мне нужно изменить в чужом приложение раскладку клавиатуры на английскую. В гугле ничего полезного...

Как узнать раскладку клавиатуры? Как её изменить? Как узнать, на каком языке текст в файле?
сабж

При запуске программы переключать раскладку клавиатуры на русский язык
Добрый день Подскажите пожалуйста. Я бы хотела чтобы я запустила программу и расскладка клавиатуры...

0
05.05.2013, 19:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2013, 19:38
Помогаю со студенческими работами здесь

Как преобразовать код клавиши в символ, учитывая раскладку клавиатуры
Всем привет! У меня такой вопрос: Есть код нажатой клавиши (пример 13 - Enter, 32 - пробел, 81 -...

Как изменить раскладку клавиатуры?
как изменить раскладку клавиатуры? tc 3. шифт+контрол и шифт+алт и шифт+шифт не помогает

Определить раскладку клавиатуры и изменить ее
Задания на работу с API-функциями 1. Определить версию операционной системы и платформу....

Как в командной строке изменить раскладку клавиатуры на английскую?
Пишу прогу, после открытия окна для ввода данных автоматически раскладка меняется на русскую....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru