Вторник, 2025-07-01

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)
Просмотров: 1700 | Теги: программная смена языка, Vb.net, смена раскладки | Рейтинг: 5.0/1
Всего комментариев: 0
avatar
Облако тегов
Поиск
Друзья сайта
  • www.youtube.com

  • vk.com/professorvb

  • Партнерка AIR

  • Партнерка VSP Group
  • Поделись с друзьям
    Теги
    урок C# си шарп видео hello world MenuStrip Генератор имен Switch дроби решебник Алгебра системы уравнения геометрия Vb.net генератор уроки математика программа условия Math массив элементов видеоуроки добавление записи в xml анекдот поиск создать XML удалить из xml калькулятор НОД нок время дата Деструкторы конструкторы тест сокращение дробей десятичные дроби тренажер английский развитие мнемоника иностранные слова random рандом professorvb OpenFileDialog Timer mindgames цикл словарь база пароль слова cos sin комплексные числа вирус массив классы массивы многомерные Break Continue do for forEach While Обработка событий rgb задать цвет XML база данных xml количество элементов xml поиск значений xml редактирование xml создание soft AntiCenz fri-gate google pirat proxy tor запрещенные сайты Open save RichTextBox TopMost DateTimePicker календарь количество дней между датами перемешивание массива Анаграммы Меморина Ребусы Рифмоплет скорочтение Сравнение дробей использование
    Copyright ProfessorVB © 2025