Help me! c раскладкой клавы в активном окне Word

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Виталий1971
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 10.06.2004 (Чт) 17:46
Откуда: г.Тверь

Help me! c раскладкой клавы в активном окне Word

Сообщение Виталий1971 » 10.06.2004 (Чт) 18:03

На первый взгляд все казалось очень просто, но прошла неделя, а полученый результат нулевой. Дело в том, что применяя проверку раскладки клавиатуры и ее последующее изменение, все это происходит только в форме VB, а в любом активном окне (например в Worde? который надо изменить) язык так и остается по умолчанию!!!
Может кто чем поможет? Plees!!!

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 10.06.2004 (Чт) 18:14

А как вы расскладку меняете ? Через API функции или через какие то функции самого VB ?

Виталий1971
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 10.06.2004 (Чт) 17:46
Откуда: г.Тверь

Сообщение Виталий1971 » 10.06.2004 (Чт) 18:26

Разными способами пробовал и через API и просто из VB.
Когда активнf форма VB (пробовал для наглядности запуск через цикл) язык циклически меняется. Когда становиться активным другое окно стоит на месте (если RU - то RU, если EN - то EN)

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 10.06.2004 (Чт) 19:37

Отец, подкинь примерчик на API - может я тебе с ним и помогу. Тока подумать придётся

Виталий1971
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 10.06.2004 (Чт) 17:46
Откуда: г.Тверь

Примеры работы проблем!!!

Сообщение Виталий1971 » 10.06.2004 (Чт) 19:55

Пример1
'Код модуля
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

' Код формы
Private Sub Command1_Click()
'Создаем документ Word и сохраняем как "1" (к примеру)
AppActivate "1" 'При запуске окно Word становиться активным

'Пробуем переключать раскладку
' Переключить на русский язык
For i = 1 To 10
Da
x = ActivateKeyboardLayout&(kb_lay_ru, 0)
' Переключить на английский язык
Da
x = ActivateKeyboardLayout&(kb_lay_en, 0)
Next i
End Sub
Private Sub Da() ' Прога задержки по времени
PauseTime = 4 ' Задает длительность.
Start = Timer ' Задает начало паузы.
Do While Timer < Start + PauseTime
DoEvents ' Передает управление другим процессам.
Loop
Finish = Timer ' Задает конец паузы.
TotalTime = Finish - Start ' Вычисляет длительность паузы.
End Sub

Пример2 пробовал с циклом аналогично Примеру1
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
Public Const HKL_NEXT = 1
Public Const HKL_PREV = 0
Public Const KLF_REORDER = &H8


Public Sub МоеИмяПроцедуры()
Dim lCodeKeybord As Long, CodeKeybord As Long
lCodeKeybord = GetKeyboardLayout(CodeKeybord)
Appactivate "1" ' Активно окно Word
If lCodeKeybord = 67699721 Then 'если английский, то все нормально
'Выполняем необходимые действия
Else 'если нет, то переключаем на английский
'в моем случае и выполняем необходимые действия
Call ActivateKeyboardLayout(HKL_NEXT, KLF_REORDER)
'Выполняем необходимые действия
'Переключаем на предыдущую раскладку, в моем случае русская
Call ActivateKeyboardLayout(HKL_PREV, KLF_REORDER)
End If


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

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

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

    TopList