InputLanguage и автоматический ввод текста - C#
Формулировка задачи:
Здравствуйте! Кто сталкивался с подобным, или знает как решить проблему, помогите пожалуйста
Такая штука, когда по нажатию на кнопку, меняется язык, работает.
А вот в коде :
смена раскладки клавиатуры не работает...
Для понимания происходящего :
1) sts - массив строк всего richTexBoxa, currentst - номер строки, на которой мы "остановились", ii - номер символа, на котором мы "остановились" в строки с номером <currentst>, dtext - словарь(ключ - строка(символ), значение - byte-код клавиш)
2) Пишу программу, которая вводит текст(надо именно ввод с клавиатуры, а не ctrl+v текста из rixhtexbox`a) на клавиатуре, взятого из richtexbox`a. Хочу, чтоб все было автоматически, то есть ввел текст в ruchtexbox : "Привет, world". Чтоб программа и ввела "Привет, world", а не "Ghbdtn, world" и т.п.
Сейчас же вводит как раз таки "Ghbdtn, world"...
Кто знает, как можно решить эту проблему? Или кто подробно знает, как работает InputLanguage, смена языка раскладки?
private void buttonHelp_Click(object sender, EventArgs e)
{
if (InputLanguage.CurrentInputLanguage.Culture.Name == "ru-RU")
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("en-US"));
}
else if (InputLanguage.CurrentInputLanguage.Culture.Name == "en-US")
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("ru-RU"));
}
}if ((((int)sts[currentst][ii] >= 1072) && ((int)sts[currentst][ii] <= 1103)) || ((int)sts[currentst][ii] == 1105)) // если буква - русс
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("ru-RU"));
keybd_event(dtext[sts[currentst][ii].ToString()], 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(dtext[sts[currentst][ii].ToString()], 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
else
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("en-US"));
keybd_event(dtext[sts[currentst][ii].ToString()], 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(dtext[sts[currentst][ii].ToString()], 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}Решение задачи: «InputLanguage и автоматический ввод текста»
textual
Листинг программы
SendKeys.SendWait(string.Join(Environment.NewLine,sts));