Сделала AHK скрипт для переключения языка ввода с помощью сочетания клавиш.
Super + F1 — Английский; Super + F2 — Японский; Super + F3 — Русский.
;Lang
;English
#F1::
SetDefaultKeyboard(0x0409)
return
;Japanese
#F2::
SetDefaultKeyboard(0x0411)
return
;Russian
#F3::
SetDefaultKeyboard(0x0419)
return
SetDefaultKeyboard(LocaleID){
Global
SPI_SETDEFAULTINPUTLANG := 0x005A
SPIF_SENDWININICHANGE := 2
Lan := DllCall("LoadKeyboardLayout", "Str", Format("{:08x}", LocaleID), "Int", 0)
VarSetCapacity(Lan%LocaleID%, 4, 0)
NumPut(LocaleID, Lan%LocaleID%)
DllCall("SystemParametersInfo", "UInt", SPI_SETDEFAULTINPUTLANG, "UInt", 0, "UPtr", &Lan%LocaleID%, "UInt", SPIF_SENDWININICHANGE)
WinGet, windows, List
Loop %windows% {
PostMessage 0x50, 0, %Lan%, , % "ahk_id " windows%A_Index%
}
}
return
К сожалению, данная DLL не переключает языки в системных интерфейсах, например в меню пуск ?