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

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

27.01.2014, 10:57. Показов 5971. Ответов 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru