Declare Function GetKeyboardLayout Lib "user32" ( _ ByVal dwLayout As Long) As Long
GetKeyboardLayout позволяет получить активный локальный идентификатор (раскладку клавиатуры) для заданной нити. Если параметр dwLayout равен 0, то возвращается идентификатор для текущей потока.
Функция возвращает локальный идентификатор для потока. Нижнее слово содержит языковой идентификатор, а старшее слово - описатель устройства для физической раскладки клавиатуры.
' Определим используемую раскладку в Блокноте ' Перед проверкой примера запустите Блокнот и меняйте в нем ' раскладку клавиатуры и проверяйте код Dim hAppWnd As Long Dim ThreadID As Long Dim ThreadLayout As Long Dim Res As Long ' Ищем окно Блокнота hAppWnd = FindWindow(vbNullString, "Безымянный - Блокнот") If hAppWnd = 0 Then MsgBox "Окно не найдено!" Else ThreadID = GetWindowThreadProcessId(hAppWnd, ByVal 0&) Res = AttachThreadInput(GetCurrentThreadId, ThreadID, 1) ThreadLayout = GetKeyboardLayout(ThreadID) Res = AttachThreadInput(GetCurrentThreadId, ThreadID, 0) MsgBox "Текущая раскладка " & Hex(ThreadLayout) End If
ActivateKeyboardLayout, LoadKeyboardLayout