С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/26: Рейтинг темы: голосов - 26, средняя оценка - 4.58
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257

Программно установить Русскую раскладку клавиатуры (именно установить, не активировать)

27.01.2014, 10:57. Показов 5946. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помощи.
Необходимо Программно установить Русскую раскладку клавиатуры в английскую версию Windows (именно установить, не активировать).
долго ищу - не могу найти.

Помогите...

А то везде только и говорят как активировать уже установленную.

Я понимаю что установить надо kbdru.dll из папки Windows/system32, но как это сделать?

Подскажите. Очень нужно...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.01.2014, 10:57
Ответы с готовыми решениями:

Программно JS установить раскладку клавиатуры с русского на английский и обратно
Надо программно установить раскладку клавиатуры с русского на английский и обратно (функцию надо на JS). При получении фокуса полями,...

Установить английскую раскладку клавиатуры
Актуально. Задача. При загрузке программы должна устанавливаться английская раскладка клавиатуры. А если она уже стоит, то такой и...

Windows 2000 - как установить раскладку клавиатуры ?
Izvenite chto pishu na translite - v etom sobstvenno i problemma. Nemogu postavit Russkuy razkladku. Windows 2000 bitiy. U mneya gore...

23
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
27.01.2014, 11:44
Не совсем понятно что ты имеешь в виду.
Если установить саму библиотеку, то смотри в реестре HKLM\SYSTEM\CurrentControlSet\Control\Ke yboardLayouts\
Потом прост загружаешь через LoadKeyboardLayout
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
27.01.2014, 15:08  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Не совсем понятно что ты имеешь в виду.
Если установить саму библиотеку, то смотри в реестре HKLM\SYSTEM\CurrentControlSet\Control\Ke yboardLayouts\
Потом прост загружаешь через LoadKeyboardLayout
Да в реестре она имеется.

А по нажатию на значок раскладки в сис.трее ее нет, а мне нужно что она там появилась...
а при необходимости - была возможность удалить ее...

Добавлено через 6 минут
Цитата Сообщение от The trick Посмотреть сообщение
Не совсем понятно что ты имеешь в виду.
Если установить саму библиотеку, то смотри в реестре HKLM\SYSTEM\CurrentControlSet\Control\Ke yboardLayouts\
Потом прост загружаешь через LoadKeyboardLayout
Вобщем объясню задумку:

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

Эту задумку я хочу поместить во что-то типа виджета на раб столе и при нажатии на него раскладка грузилась и можно было на нее переключиться стандартными Alt+Shift... а при отключении - раскладка отключалась и в системе оставался только английский...

помогите. очень нужно... Виртуальную клавиатуру писать не хочу... проще подгружать раскладку временно, так как на клавиатуре русские буквы нарисованы и проще пользоваться физической, но держать постоянно русскую раскладку в системе нельзя...
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
27.01.2014, 15:31
Непонятно, почему в VB6?
Там вроде всё просто ( на русской Винде названия, по Английски думаю подобные) - Панель управления -> Языки региональные стандарты-> Подробно, Языки и службы текстового ввода, кнопка "Добавить", и добавляете хоть Японский, хоть Русский.
Не нужен? Кнопка "Удалить".
На все манипуляции ровно 20 секунд, зачем нужен лишний софт?
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
27.01.2014, 15:42  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Непонятно, почему в VB6?
Там вроде всё просто ( на русской Винде названия, по Английски думаю подобные) - Панель управления -> Языки региональные стандарты-> Подробно, Языки и службы текстового ввода, кнопка "Добавить", и добавляете хоть Японский, хоть Русский.
Не нужен? Кнопка "Удалить".
На все манипуляции ровно 20 секунд, зачем нужен лишний софт?
это все понятно, но мне необходимо именно через VB это реализовать...
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
27.01.2014, 16:04
Лучший ответ Сообщение было отмечено Yury Komar как решение

Решение

Цитата Сообщение от Юрий Косар Посмотреть сообщение
через VB это реализовать...
Полуавтомат:
Visual Basic
1
2
3
4
5
6
7
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Private Sub Command1_Click()
 
ShellExecute Me.hwnd, vbNullString, "C:\WINDOWS\system32\intl.cpl", vbNullString, "C:\", SW_SHOWNORMAL
 
End Sub
Автомат, но тут надо экспериментировать. Общее направление - запуск intl.cpl с параметрами
intl.cpl,,/f:"c:\locale.txt"

А в тексте( для XP) то, что надо, только для кириллицы.
[RegionalSettings]
Language=0401
LanguageGroup=13
SystemLocale=0401
UserLocale=0401
InputLocale=0409:00000409,0401:00000401
Для win7 не txt, а xml
<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnatt end">
<gs:UserList>
<gs:User UserID="Current" CopySettingsToDefaultUserAcct="true" CopySettingsToSystemAcct="true"/>
</gs:UserList>
<gs:InputPreferences>
<!--en-US--><gs:InputLanguageID Action="add" ID="0409:00000409" Default="true"/>
<!--remove-es-Int--><gs:InputLanguageID Action="remove" ID="0c0a:0000040a"/>
<!--en-Int--><gs:InputLanguageID Action="add" ID="0409:00020409"/>
<!--zh-CH--><gs:InputLanguageID Action="add" ID="0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{F3BA9077-6C7E-11D4-97FA-0080C882687E}"/>
<!--zh-TW--><gs:InputLanguageID Action="add" ID="0404:{531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{761309DE-317A-11D4-9B5D-0080C882687E}"/>
<!--jp-JP--><gs:InputLanguageID Action="add" ID="0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}"/>
</gs:InputPreferences>
<!-- system locale --><gs:SystemLocale Name="en-US" />
</gs:GlobalizationServices>
В общем ищи в этом направлении.
Если окно с настройками языков не запускается, то причина может быть в отсутствии библиотеки sfcfiles.dll в папке \windows\system32. Просто перезаписать с той системы, где она есть.
3
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
27.01.2014, 16:14  [ТС]
буду пробовать...

спасибо
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
27.01.2014, 16:21
Так проще запустить, без API
Visual Basic
1
ID = Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1", vbNormalFocus)
2
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
27.01.2014, 17:44
А LoadKeyboardLayout не работает что-ли? Если запись в реестрее есть то она должна отработать и загрузить нужную раскладку.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
27.01.2014, 19:42  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
А LoadKeyboardLayout не работает что-ли? Если запись в реестрее есть то она должна отработать и загрузить нужную раскладку.
не работает...
может она и загрузит ее, но возможности выбора раскладок не будет и преключаться между русс и англ ты не сможешь...

Добавлено через 3 минуты
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Так проще запустить, без API
Visual Basic
1
ID = Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1", vbNormalFocus)
да. но тут она открывает окно для выбора...
а мне оно не нужно, а нужно по тихому провернуть операцию добавления или удаления нужной раскладки...

Добавлено через 7 минут
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Автомат, но тут надо экспериментировать. Общее направление - запуск intl.cpl с параметрами
intl.cpl,,/f:"c:\locale.txt"
А в тексте( для XP) то, что надо, только для кириллицы.
[RegionalSettings]
Language=0401
LanguageGroup=13
SystemLocale=0401
UserLocale=0401
InputLocale=0409:00000409,0401:00000401
Для win7 не txt, а xml
<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnatt end">
<gs:UserList>
<gs:User UserID="Current" CopySettingsToDefaultUserAcct="true" CopySettingsToSystemAcct="true"/>
</gs:UserList>
<gs:InputPreferences>
<!--en-US--><gs:InputLanguageID Action="add" ID="0409:00000409" Default="true"/>
<!--remove-es-Int--><gs:InputLanguageID Action="remove" ID="0c0a:0000040a"/>
<!--en-Int--><gs:InputLanguageID Action="add" ID="0409:00020409"/>
<!--zh-CH--><gs:InputLanguageID Action="add" ID="0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{F3BA9077-6C7E-11D4-97FA-0080C882687E}"/>
<!--zh-TW--><gs:InputLanguageID Action="add" ID="0404:{531FDEBF-9B4C-4A43-A2AA-960E8FCDC732}{761309DE-317A-11D4-9B5D-0080C882687E}"/>
<!--jp-JP--><gs:InputLanguageID Action="add" ID="0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}"/>
</gs:InputPreferences>
<!-- system locale --><gs:SystemLocale Name="en-US" />
</gs:GlobalizationServices>

вот с этим не понял чуток...

вобщем я так понял что выполняю:
Цитата Сообщение от Pro_grammer Посмотреть сообщение
запуск intl.cpl с параметрами intl.cpl,,/f:"c:\locale.txt"
при помощи Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1", vbHide)


но перед этим создаю c:\locale.txt или .xml с нужным текстом..?

тоесть делаю так?: Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,/f:""c:\locale.txt""", vbHide)

верно?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
27.01.2014, 20:39
Цитата Сообщение от Юрий Косар Посмотреть сообщение
верно?
В теории да.Только правильно в Бейсике так:
Visual Basic
1
A = Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,/f:" & Chr(34) & "c:\locale.txt" & Chr(34), vbHide)
А на практике надо иметь английскую Винду и тестировать.
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
27.01.2014, 22:22
Цитата Сообщение от Юрий Косар Посмотреть сообщение
не работает...
может она и загрузит ее, но возможности выбора раскладок не будет и преключаться между русс и англ ты не сможешь...
Или я тебя не понял, или ты что-то не то делаешь. Вот загрузка немецкой раскладки из VB6.
Миниатюры
Программно установить Русскую раскладку клавиатуры (именно установить, не активировать)  
1
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
28.01.2014, 19:57  [ТС]
Беда... через loadkeyboardlayout она ее грузит но не устанавливает... тоесть она в трее доступна а вот через стандартное окно ее не удалить - так каа там ее нет ((
A через shell она ставится правильно...

Вторая беда... с помошья апи UnloadKeyboardLayout она не удаляется... или может я чтото не правильно делаю?

Я делаю так UnloadKeyboardLayout "00000419" и нифига

Добавлено через 7 минут
И еще, я извиняюсь, вопрос не по теме - пока не забыл, спросить хочу, у тебя на семерке при перемещении кнопок всего осталтного бэйсик тоже глючит, тормозит и мерцает? И как это исправить а то оч не комфортно.

Добавлено через 2 минуты
Да извиняюсь, ошибся, Latout ее грузит, не полноценно почему то.
И удалить не могу программно...
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
28.01.2014, 20:05
Лучший ответ Сообщение было отмечено Yury Komar как решение

Решение

Цитата Сообщение от Юрий Косар Посмотреть сообщение
Я делаю так UnloadKeyboardLayout "00000419" и нифига
Потому что ты делаешь неправильно, почитай сначала как используеться эта API функция
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Option Explicit
 
Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
Private Declare Function UnloadKeyboardLayout Lib "user32" (ByVal HKL As Long) As Long
Private Const KLF_ACTIVATE = &H1
Private Const KLF_SETFORPROCESS = &H100
 
Dim hKlm As Long
 
Private Sub Form_Load()
    hKlm = LoadKeyboardLayout("00000407", KLF_ACTIVATE Or KLF_SETFORPROCESS)
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    UnloadKeyboardLayout hKlm
End Sub
Цитата Сообщение от Юрий Косар Посмотреть сообщение
И еще, я извиняюсь, вопрос не по теме - пока не забыл, спросить хочу, у тебя на семерке при перемещении кнопок всего осталтного бэйсик тоже глючит, тормозит и мерцает? И как это исправить а то оч не комфортно.
1
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
28.01.2014, 20:15  [ТС]
Ё-моё... вот я подвис на такой мелочи... блин спасибо...
Но я смогу выгрузить только во время выполнения кода. А как быть если раскладка вче еще в системе, но приложение уже закрыто... в итоге при запуске придется снова активировать чтобы потом выгрузить?
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
28.01.2014, 20:17
Цитата Сообщение от Юрий Косар Посмотреть сообщение
Но я смогу выгрузить только во время выполнения кода. А как быть если раскладка вче еще в системе, но приложение уже закрыто... в итоге при запуске придется снова активировать чтобы потом выгрузить?
Как такое может быть? Ты ставь на Unload выгрузку и, если код написан без ошибок, он всегда будет выгружать раскладку.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
28.01.2014, 20:22  [ТС]
А если мне нужно подержать раскладку какое то время в системе но приложение должно быть не активно? Это возможно?
Тем не менее. Спасибо большое... думаю проблема решится...
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
28.01.2014, 20:25
Цитата Сообщение от Юрий Косар Посмотреть сообщение
А если мне нужно подержать раскладку какое то время в системе но приложение должно быть не активно? Это возможно?
Тем не менее. Спасибо большое... думаю проблема решится...
Ты можешь скрыть окно, сделать безоконное приложение, либо сделать при каждом включении программа будет, то загружать, то выгружать. Вариантов масса.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
28.01.2014, 21:07  [ТС]
Да. Я поиграюсь... наверно этот вариант удобный именно для Run time... а через пожизненно ))) к тому ж там еще и локализация начтраиваться может. По желанию...
Вобщем всё. Я все понял... спс...!
И кстати про проблему с перемещением. Спасибо за счылку. Так все элементарно блин... а я уже несколтко лет плююсь!! Думал это не реально исправить...

Добавлено через 5 минут
Pro_grammer, а через Shell как нужную мне раскладку можно удалить? Разбирался с txt и xml не нашел..

Добавлено через 30 минут
Как я и предполагал. Щас проверил в англ системе Windows. Раскладку устанавливает но по умолчанию там не стояло никаких горячих клавиш на смену раскладок... и плэтому я т не могу переключиться их... как в VB6 задать горячие клавиши на смену раскладок? То что активировать раскладку модно это да. И как программно сделать свои клавиши тоже. Но как чистемные горячие клавиши активировать, такие как alt+shift или ctrl+shift?
Это можно через апи сделать или внутренними функциями бэйсика? Или же снова через shell это провернуть?

Надеюсь что такое есть. Отпишите кто знает плииз...
0
Модератор
10046 / 3892 / 883
Регистрация: 22.02.2013
Сообщений: 5,846
Записей в блоге: 79
28.01.2014, 21:13
HKEY_USERS\Keyboard Layout\Toggle ключ Language Hotkey
Когда он имеет значение 1, язык переключается через левые Alt+Shift, когда 2, то через левые Crtl+Shift.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.01.2014, 21:13
Помогаю со студенческими работами здесь

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

Как программно определить текущую раскладку клавиатуры?
Хочу написать для себя небольшую программку, которая будет постоянно показывать на экране монитора небольшое окошко, на котором будет...

Могу я установить Management Studio русскую?
День добрый. Если у меня установлен английский MS SQL Server, могу я установить Management Studio русскую? чтобы понятно мне было

Установить в консоле при запуске раскладку dvorak
Как установить расскладку dvorak по умолчанию в консоле?? Так что б при старте была именно эта расскладка.

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru