Перейти к содержимому

Фотография

Определение текущей раскладки клавиатуры (Rus/En)


  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 Alex-tester

Alex-tester

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Альферович Лёха


Отправлено 15 ноября 2006 - 07:52

Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long

Global Const HKL_NEXT = 1
Global Const HKL_PREV = 0
Global Const KLF_REORDER = &H8

Sub МоеИмяПроцедуры()
Dim lCodeKeybord As Long
Dim CodeKeybord As Long
lCodeKeybord = GetKeyboardLayout(CodeKeybord)
If lCodeKeybord = 67699721 Then 'если английский, то все нормально

'Выполняем необходимые действия

Else 'если нет, то переключаем на английский
'в моем случае и выполняем необходимые действия

Call ActivateKeyboardLayout(HKL_NEXT, KLF_REORDER)
'Выполняем необходимые действия

'Переключаем на предыдущую раскладку, в моем случае русская
Call ActivateKeyboardLayout(HKL_PREV, KLF_REORDER)

End If

End Sub

Пример взят из обсуждения:
http://forums.softwa...st=
  • 0

#2 AlejandroPopov

AlejandroPopov

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Попов Александр

Отправлено 05 марта 2009 - 06:57

проблема в том, что это не будет работать, если в какой-то программе выбрана рус. раскладка, а нужно переключить на англ. и ввести англ. символы в этой программе.
раскладка переключается для текущего (активного) процесса, а винде нет функции переключающей раскладку в стороннем процессе.

ps. os winxp sp3
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных