Среда, 2025-01-22

Professor VB - примеры на VB.net и C#
Меню сайта
Вход на сайт
Категории раздела
Уроки VB.net [25]
VB.net и математика [13]
Random VB [4]
VB.net - разное [7]
VB.net - Примеры программ [2]
Главная » Статьи » VB.net » Уроки VB.net

VB.net - Программная смена раскладки

VB.net - Программная смена раскладки

 



В этой статье я расскажу о программном способе смены раскладки.

--

Основным языком в компьютерной технологии является английский. Поэтому пользователям других языков приходится, кроме английского, использовать еще и родной.

 

Допустим, вам необходимо заполнить простую анкету - фио, город, страна и тд.

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

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

 

Сделаем программу, которая при запуске, будет переключать раскладку на русскую.

 

Создаем новый проект.

На форму помещаем текстовое поле.

 

В проект добавляем модуль. Даем ему следующее имя - basKeyboardLayout , а в тело помещаем следующий код.

 


Module basKeyboardLayout
    Declare Function ActivateKeyboardLayout Lib "user32" _
    (ByVal HKL As Long, ByVal flags As Long) As Long

    Const Ru_RU As Long = &H4190419
    Const En_US As Long = &H4090409

    Public Sub RussianKeyboard()
        ActivateKeyboardLayout(Ru_RU, 0)
    End Sub
'RussianKeyboard


    Public Sub EnglishKeyboard()
        ActivateKeyboardLayout(En_US, 0)
    End Sub
'EnglishKeyboard
End Module


 

Теперь двойным кликом по форме, переходим к коду загрузки программы.

 

Для выбора языка используются следующие числа -

Для АНГ r = 1033

для РУС r = 1049

Для УКР r = 1058

 


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Dim myCurrentLanguage As InputLanguage = InputLanguage.CurrentInputLanguage
        Dim r = myCurrentLanguage.Culture.LCID

        If r <> 1049 Then
            basKeyboardLayout.RussianKeyboard()
        End If

    End Sub

 


Как вариант, вам может понадобится ввод в некоторые поля(фио, адрес...) кириллицей, а некоторые (почта) - латиницей.

Такое можно достичь следующим кодом.

Во второе текстовое поле вводим слова на латинице. В данном коде, если вводим Р, У, Д или Щ - данная буква заменяется на H, E, L, O - соответственно.


    Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
        Dim myCurrentLanguage As InputLanguage = InputLanguage.CurrentInputLanguage
        Dim r = myCurrentLanguage.Culture.LCID

        If r <> 1033 Then
            basKeyboardLayout.EnglishKeyboard()

            Select Case TextBox2.Text
                Case "р"
                    TextBox2.Text = "h"
                Case "у"
                    TextBox2.Text = "e"
                Case "д"
                    TextBox2.Text = "l"
                Case "щ"
                    TextBox2.Text = "o"
                Case Else
                    TextBox2.Text = ""
            End Select

            '---перевод курсора на нужную позицию

            TextBox2.SelectionStart = 1

        End If

    End Sub


Для третьего текстового поля, которое назовем txtOtvets, будет следующие правило. Любая буква из англ раскладки будет заменена на соответствующую из русской.


 Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles txtOtvets.TextChanged
        Dim myCurrentLanguage As InputLanguage = InputLanguage.CurrentInputLanguage
        Dim r = myCurrentLanguage.Culture.LCID

        If r <> 1049 Then
            basKeyboardLayout.RussianKeyboard()

            Select Case txtOtvets.Text
                Case "q"
                    txtOtvets.Text = "й"
                Case "w"
                    txtOtvets.Text = "ц"
                Case "e"
                    txtOtvets.Text = "у"
                Case "r"
                    txtOtvets.Text = "к"
                Case "t"
                    txtOtvets.Text = "е"
                Case "y"
                    txtOtvets.Text = "н"
                Case "u"
                    txtOtvets.Text = "г"
                Case "i"
                    txtOtvets.Text = "ш"
                Case "o"
                    txtOtvets.Text = "щ"
                Case "p"
                    txtOtvets.Text = "з"
                Case "["
                    txtOtvets.Text = "х"
                Case "]"
                    txtOtvets.Text = "ъ"
                Case "a"
                    txtOtvets.Text = "ф"
                Case "s"
                    txtOtvets.Text = "ы"
                Case "d"
                    txtOtvets.Text = "в"
                Case "f"
                    txtOtvets.Text = "а"
                Case "g"
                    txtOtvets.Text = "п"
                Case "h"
                    txtOtvets.Text = "р"
                Case "j"
                    txtOtvets.Text = "о"
                Case "k"
                    txtOtvets.Text = "л"
                Case "l"
                    txtOtvets.Text = "д"
                Case ";"
                    txtOtvets.Text = "ж"
                Case "'"
                    txtOtvets.Text = "э"
                Case "z"
                    txtOtvets.Text = "я"
                Case "x"
                    txtOtvets.Text = "ч"
                Case "c"
                    txtOtvets.Text = "с"
                Case "v"
                    txtOtvets.Text = "м"
                Case "b"
                    txtOtvets.Text = "и"
                Case "n"
                    txtOtvets.Text = "т"
                Case "m"
                    txtOtvets.Text = "ь"
                Case ","
                    txtOtvets.Text = "б"
                Case "."
                    txtOtvets.Text = "ю"

                Case Else
                    txtOtvets.Text = ""
            End Select

            '---перевод курсора на нужную позицию

            txtOtvets.SelectionStart = 1

        End If
    End Sub

 


Каждую введенную букву меняем на букву из другой раскладки, а за тем переносим каретку ввода после замененной буквы.

 

 

На сегодня это все, если у вас остались вопросы, смело задавайте их в комментариях.

Смотреть видео

 

 

В начало



 

Категория: Уроки VB.net | Добавил: ProfessorVB (2016-06-23)
Просмотров: 1661 | Теги: программная смена языка, Vb.net, смена раскладки | Рейтинг: 5.0/1
Всего комментариев: 0
avatar
Облако тегов
Поиск
Друзья сайта
  • www.youtube.com

  • vk.com/professorvb

  • Партнерка AIR

  • Партнерка VSP Group
  • Поделись с друзьям
    Теги
    Видео Switch массивы уравнения геометрия continue forEach while Обработка событий задать цвет C# math Vb.net xml количество элементов xml поиск значений математика видеоуроки Soft системы Google pirat Proxy tor НОД нок добавление записи в xml поиск Уроки генератор hello world время деструкторы конструкторы дроби калькулятор десятичные дроби решебник сокращение дробей си шарп мнемоника тренажер random количество дней между датами professorvb дата Урок mindgames алгебра многомерные слова словарь Пароль cos SIN база timer рандом Цикл Break DO for RGB условия массив элементов xml редактирование xml создание вирус MenuStrip AntiCenz fri-gate запрещенные сайты база данных Open RichTextBox XML удалить из xml save TopMost анекдот создать XML Классы Тест OpenFileDialog английский развитие иностранные слова DateTimePicker календарь массив перемешивание массива Анаграммы Рифмоплет Сравнение дробей Меморина скорочтение Использование ребусы комплексные числа программа генератор имен
    Copyright ProfessorVB © 2025