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=
Определение текущей раскладки клавиатуры (Rus/En)
Автор Alex-tester, 15 ноя 2006 07:52
В теме одно сообщение
#1
Отправлено 15 ноября 2006 - 07:52
#2
Отправлено 05 марта 2009 - 06:57
проблема в том, что это не будет работать, если в какой-то программе выбрана рус. раскладка, а нужно переключить на англ. и ввести англ. символы в этой программе.
раскладка переключается для текущего (активного) процесса, а винде нет функции переключающей раскладку в стороннем процессе.
ps. os winxp sp3
раскладка переключается для текущего (активного) процесса, а винде нет функции переключающей раскладку в стороннем процессе.
ps. os winxp sp3
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных