Модератор
Эксперт .NET
 Аватар для Yury Komar
4360 / 3430 / 512
Регистрация: 27.01.2014
Сообщений: 6,258

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

27.01.2014, 10:57. Показов 6092. Ответов 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
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
27.01.2014, 11:44
Не совсем понятно что ты имеешь в виду.
Если установить саму библиотеку, то смотри в реестре HKLM\SYSTEM\CurrentControlSet\Control\Ke yboardLayouts\
Потом прост загружаешь через LoadKeyboardLayout
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4360 / 3430 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
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
4360 / 3430 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
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
4360 / 3430 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
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
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
27.01.2014, 17:44
А LoadKeyboardLayout не работает что-ли? Если запись в реестрее есть то она должна отработать и загрузить нужную раскладку.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4360 / 3430 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
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
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
27.01.2014, 22:22
Цитата Сообщение от Юрий Косар Посмотреть сообщение
не работает...
может она и загрузит ее, но возможности выбора раскладок не будет и преключаться между русс и англ ты не сможешь...
Или я тебя не понял, или ты что-то не то делаешь. Вот загрузка немецкой раскладки из VB6.
Миниатюры
Программно установить Русскую раскладку клавиатуры (именно установить, не активировать)  
1
Модератор
Эксперт .NET
 Аватар для Yury Komar
4360 / 3430 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
28.01.2014, 19:57  [ТС]
Беда... через loadkeyboardlayout она ее грузит но не устанавливает... тоесть она в трее доступна а вот через стандартное окно ее не удалить - так каа там ее нет ((
A через shell она ставится правильно...

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

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

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

Добавлено через 2 минуты
Да извиняюсь, ошибся, Latout ее грузит, не полноценно почему то.
И удалить не могу программно...
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 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
4360 / 3430 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
28.01.2014, 20:15  [ТС]
Ё-моё... вот я подвис на такой мелочи... блин спасибо...
Но я смогу выгрузить только во время выполнения кода. А как быть если раскладка вче еще в системе, но приложение уже закрыто... в итоге при запуске придется снова активировать чтобы потом выгрузить?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
28.01.2014, 20:17
Цитата Сообщение от Юрий Косар Посмотреть сообщение
Но я смогу выгрузить только во время выполнения кода. А как быть если раскладка вче еще в системе, но приложение уже закрыто... в итоге при запуске придется снова активировать чтобы потом выгрузить?
Как такое может быть? Ты ставь на Unload выгрузку и, если код написан без ошибок, он всегда будет выгружать раскладку.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4360 / 3430 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
28.01.2014, 20:22  [ТС]
А если мне нужно подержать раскладку какое то время в системе но приложение должно быть не активно? Это возможно?
Тем не менее. Спасибо большое... думаю проблема решится...
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
28.01.2014, 20:25
Цитата Сообщение от Юрий Косар Посмотреть сообщение
А если мне нужно подержать раскладку какое то время в системе но приложение должно быть не активно? Это возможно?
Тем не менее. Спасибо большое... думаю проблема решится...
Ты можешь скрыть окно, сделать безоконное приложение, либо сделать при каждом включении программа будет, то загружать, то выгружать. Вариантов масса.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4360 / 3430 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
28.01.2014, 21:07  [ТС]
Да. Я поиграюсь... наверно этот вариант удобный именно для Run time... а через пожизненно ))) к тому ж там еще и локализация начтраиваться может. По желанию...
Вобщем всё. Я все понял... спс...!
И кстати про проблему с перемещением. Спасибо за счылку. Так все элементарно блин... а я уже несколтко лет плююсь!! Думал это не реально исправить...

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

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

Надеюсь что такое есть. Отпишите кто знает плииз...
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru