Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как переключать раскладку клавиатуры? Добавлено: 19.05.03 14:00  

Автор вопроса:  Юрий***

Всем привет! Как переключать раскладку клавиатуры на уровне Windows? Например, чтобы это работало в Word' е и других текстовых редакторах. Код,приведённый ниже, и другие похожие дают локальное переключение на уровне VB программы, где этот код находится.

Option Explicit

Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long

Private Const KLF_ACTIVATE = 1

Public Sub SetLanguage(ByVal s As String)

Select Case UCase(Left(s, 1))

Case "R"

LoadKeyboardLayout "00000419", KLF_ACTIVATE

Case "E"

LoadKeyboardLayout "00000409", KLF_ACTIVATE

Case Else

End Select

End Sub

Private Sub Command1_Click()

'Вызывается соответственно с параметром "R", "U" или "E"

SetLanguage ("R")

End Sub

Private Sub Command2_Click()

SetLanguage ("E")

End Sub

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 Padre



ICQ: 346632205 

Вопросов: 25
Ответов: 215
 Web-сайт: localhost
 Профиль | | #1
Добавлено: 19.05.03 14:05

 

Declare Function ActivateKeyboardLayout Lib "user32" _

(ByVal HKL As Long, ByVal flags As Long) As Long

Public Const kb_lay_ru As Long = 68748313

Public Const kb_lay_en As Long = 67699721

'ru

x = ActivateKeyboardLayout&;(kb_lay_ru, 0)

'eng

x = ActivateKeyboardLayout&;(kb_lay_en, 0)

Ответить

Номер ответа: 2
Автор ответа:
 Юрий***



Вопросов: 9
Ответов: 10
 Профиль | | #2 Добавлено: 20.05.03 02:18

Не проходит этот номер в Word'e !!! Возвращает он прежнюю раскладку!

Ответить

Номер ответа: 3
Автор ответа:
 Padre



ICQ: 346632205 

Вопросов: 25
Ответов: 215
 Web-сайт: localhost
 Профиль | | #3
Добавлено: 20.05.03 02:42

Вот в таком варианте у меня в Ворде всё работает. Кинул две кнопки и написал код в ThisDocument:

 

Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
Private Const kb_lay_ru As Long = 68748313
Private Const kb_lay_en As Long = 67699721


Private Sub CommandButton1_Click()
Dim x
x = ActivateKeyboardLayout&;(kb_lay_ru, 0)
End Sub

Private Sub CommandButton2_Click()
Dim x
x = ActivateKeyboardLayout&;(kb_lay_en, 0)
End Sub

Ответить

Номер ответа: 4
Автор ответа:
 USA



Вопросов: 1
Ответов: 184
 Профиль | | #4 Добавлено: 20.05.03 02:58

В офисе можно примерно так: Word.Application.Language

Ответить

Номер ответа: 5
Автор ответа:
 Юрий***



Вопросов: 9
Ответов: 10
 Профиль | | #5 Добавлено: 20.05.03 20:32

Padre, USA, привет! Теперь по поводу твоего кода, Padre. Я испытывал именно этот код. Печатаешь, например, в Worde в английской раскладке. Программой с этим кодом переключаешь раскладку на русскую, в трее появляется значок Ru. Переходишь к Word'у и значок в трее моментом меняется обратно к En. В итоге Word продолжает печатать латинскими буквами. То же самое происходит и в Блокноте, и в Bred2. Что я делаю неправильно?

USA, не мог бы ты немного поподробней, а то я начинающий программист. Пока.

Ответить

Номер ответа: 6
Автор ответа:
 USA



Вопросов: 1
Ответов: 184
 Профиль | | #6 Добавлено: 21.05.03 05:29

Каюсь, лебедя загнал.

Напиши в Document_Open строку

Word.Application.Keyboard msoLanguageIDRussian

При открытии документа ворд будет переключаться на русскую раскладку. Так же можно в других офисных прогах, меняй только первое слово на имя приложения.

Ответить

Номер ответа: 7
Автор ответа:
 Юрий***



Вопросов: 9
Ответов: 10
 Профиль | | #7 Добавлено: 21.05.03 21:09

USA, спасибо! Попробую, как ты советуешь. Хотя мне нужно, чтобы я мог перекючать раскладку и в других редакторах.

Ответить

Номер ответа: 8
Автор ответа:
 Юрий***



Вопросов: 9
Ответов: 10
 Профиль | | #8 Добавлено: 21.05.03 21:09

USA, спасибо! Попробую, как ты советуешь. Хотя мне нужно, чтобы я мог перекючать раскладку и в других редакторах.

Ответить

Номер ответа: 9
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #9 Добавлено: 22.05.03 20:56

Попробуй перед переключением раскладки активировать окно твоего редактора. Допустим, "отвлекаясь" от Ворда и запуская свой переключатель раскладок, ты делаешь окно Ворда неактивным. Скорее всего, так. Из-за этого у тебя раскладка и не "привязывается" к Ворду. Но если прога сначала найдёт окошко Ворда и сделает его активным, а уже потом сменит раскладку, то по идее, должно всё получиться...

Примеры по работе с "чужими" окнами есть на VBNET в избытке.

 

Ответить

Номер ответа: 10
Автор ответа:
 Dobrii_Goodwin



Вопросов: 0
Ответов: 1
 Профиль | | #10 Добавлено: 04.05.11 06:26
Для тех, кто устал постоянно перепечатывать текст, набранный по ошибке на английском. Программа PuntoSwitcher (Пунто свитчер) идеальный выход из сложившейся ситуации. Сэкономит кучу времени. Можно скачать бесплатно по этой ссылке http://depositfiles.com/files/exat08nbo

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам