Как переключится на русский язык?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Как переключится на русский язык?

Сообщение Александр80 » 20.12.2004 (Пн) 20:31

Помогите, как сделать так чтобы при запуске программы происходило переключение раскладки клавиатуры на русский язык? Приведите пример, если можно. Мне кажется, что через API, но как? :(
Помогите... :)

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 20.12.2004 (Пн) 20:41

При помощи АПИ

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 20.12.2004 (Пн) 20:43

Я понимаю, код можно для примера...? Пожалуйста...

Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 20.12.2004 (Пн) 21:00

Может поможет

Код: Выделить всё
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
Private Sub Command1_Click()
ActivateKeyboardLayout 0, 0
End Sub

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 20.12.2004 (Пн) 21:03

Большое спасибо....

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 20.12.2004 (Пн) 23:53

Советую еще добавить кой-какие константы:

Public Const kb_lay_ru As Long = 68748313
Public Const kb_lay_en As Long = 67699721

и использовать их как первый параметр.

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 22.12.2004 (Ср) 0:19

Спасибо, попробую....

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 30.12.2004 (Чт) 15:45

Всем спасибо.... :D

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

' Переключаем на русский
ActivateKeyboardLayout 68748313, 0
' Переключаем на английский
ActivateKeyboardLayout 67699721, 0

Оказывается так просто. :D

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 02.01.2005 (Вс) 0:09

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

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 02.01.2005 (Вс) 3:31

Так собственно...
GetKeyboardLayout :D
То есть что-то типа:

Dim nStartKL as Long

Private Sub Form_Load()
nStartKL = GetKeyboardLayout (0)
End Sub

Private Sub Form_Unload()
ActivateKeyboardLayout nStartKL, 0
End Sub

Ну и предварительно пообъявлять функции в каком-нить модуле, естественно:
Public Declare Function GetKeyboardLayout Lib "user32" Alias "GetKeyboardLayout" (ByVal dwLayout As Long) As Long

Public Declare Function ActivateKeyboardLayout Lib "user32" Alias "ActivateKeyboardLayout" (ByVal HKL As Long, ByVal flags As Long) As Long

Читайте MSDN!

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 04.01.2005 (Вт) 6:44

2Odrick
Твой способ не работает...
Я разместил только не в модуль, а в форму, но и код изменил под это... Форма запускается без глюков, и выходит когда надо, а язык остается тот что был в проге...

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 05.01.2005 (Ср) 20:59

Ну не знаю, что у тебя могло не получиться... Тут все просто до безобразия :D
Давай адрес почты - скину пример.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 06.01.2005 (Чт) 3:16

Кстати не забывайте, что каждая нить имеет свой язык.
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.01.2005 (Чт) 5:04

GM писал(а):Кстати не забывайте, что каждая нить имеет свой язык.
Ну просто сюрреализм... Нити с языками :roll:
Изображение

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 06.01.2005 (Чт) 8:37

2odrik
я стараюсь не оставлять на форумах свой e-mail, а то потом от спама не спастись.
Выложи пример на форуме, я скачаю, посмотрю и разберусь... наверное.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 08.01.2005 (Сб) 3:12

tyomitch писал(а):
GM писал(а):Кстати не забывайте, что каждая нить имеет свой язык.
Ну просто сюрреализм... Нити с языками :roll:

Ладно ,раскладка клавиатуры поддерживается на уровне Thread'а. :)
الفيجوال بيسك الرابح

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 08.01.2005 (Сб) 4:02

Можно и выложить. Только как это сделать на этом форуме? :oops:

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 08.01.2005 (Сб) 13:08

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

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 08.01.2005 (Сб) 19:03

Ладно, ни фига не получается - орет, что нет возможности закачать файл, хотя это малюсенький архив :twisted:

Даю листинг кода, который работает на XP и 98 точно:

Форма с кнопкой Command1:

Option Explicit
Dim nLastKL As Long

Private Sub Command1_Click()
ActivateKeyboardLayout 0, 0
End Sub

Private Sub Form_Load()
nLastKL = GetKeyboardLayout(0)
End Sub

Private Sub Form_Unload(Cancel As Integer)
ActivateKeyboardLayout nLastKL, 0
End Sub

Модуль:
Public Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Public Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 10.01.2005 (Пн) 0:59

2Odrick
хоть убей ни в какую...
получается установить язык при загрузке формы, а так чтоб изменить его назад - НИКАК... ладно всем спасибо... язык при загрузке/выгрузке - это не главное!..


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 135

    TopList