#SingleInstance, Force IfEqual, A_IsAdmin, % False, Run, % "*RunAs """A_ScriptFullPath """" ; выясняем сколько вообще nBuff:=DllCall("GetKeyboardLayoutList", "Int", 0, "Ptr", 0, "Int") ; получаем значения в переменную lpList DllCall("GetKeyboardLayoutList", "Int", nBuff, "Ptr", VarSetCapacity(lpList, A_PtrSize*nBuff)*0|&lpList) ; обрабатываем lpList присваивая значения полей динамическим переменным Loop, % nBuff locale%A_Index%:=ConvertFormat(NumGet(lpList, A_Index=1 ? 0:A_PtrSize*(A_Index-1), "UInt")) ; нумерация по порядку добавления в систему через: ; Панель управления/Язык и региональные стандарты/Язык и клавиатуры>Изменить клавиатуру.../Языки и службы текстового ввода ; проверяем текущую, активируем любое окно и жмём пробел ListLines, Off SoundBeep, 12500, 250 KeyWait, Space, % "D" ListLines, On threadId:=DllCall("GetWindowThreadProcessId", "Ptr", DllCall("GetForegroundWindow", "Ptr"), "UInt*", 0, "UInt") HKL:=ConvertFormat(DllCall("GetKeyboardLayout", "UInt", threadId, "UPtr")) ; просмотр результатов, жмём пробел для выхода ListLines, Off ListVars SendEvent, % "#{Right}" KeyWait, Space, % "L" KeyWait, Space, % "D" ConvertFormat(p) { Static s:=A_IsUnicode ? "W":"A" DllCall("wsprintf"s, "Str", res:="ahk4rever", "Str", "0x%08X", "UInt", p, "Cdecl") Return, res } |