На самом деле, я нашел обходной путь, который отлично справляется с проблемой.
- Загрузите эту бесплатную утилиту https://autohotkey.com
- Создайте файл * .ahk и вставьте скрипт
; This should be replaced by whatever your native language is. See
; http://msdn.microsoft.com/en-us/library/dd318693%28v=vs.85%29.aspx
; for the language identifiers list.
en := DllCall("LoadKeyboardLayout", "Str", "00000409", "Int", 1)
de := DllCall("LoadKeyboardLayout", "Str", "00000C07", "Int", 1)
sv := DllCall("LoadKeyboardLayout", "Str", "0000081D", "Int", 1)
^1::
w := DllCall("GetForegroundWindow")
pid := DllCall("GetWindowThreadProcessId", "UInt", w, "Ptr", 0)
l := DllCall("GetKeyboardLayout", "UInt", pid)
PostMessage 0x50, 0, %en%,, A
return
^2::
w := DllCall("GetForegroundWindow")
pid := DllCall("GetWindowThreadProcessId", "UInt", w, "Ptr", 0)
l := DllCall("GetKeyboardLayout", "UInt", pid)
PostMessage 0x50, 0, %de%,, A
return
^3::
w := DllCall("GetForegroundWindow")
pid := DllCall("GetWindowThreadProcessId", "UInt", w, "Ptr", 0)
l := DllCall("GetKeyboardLayout", "UInt", pid)
PostMessage 0x50, 0, %sv%,, A
return
Обратите внимание, что мы определяем язык следующим образом:
sv := DllCall("LoadKeyboardLayout", "Str", "0000081D", "Int", 1)
Идентификатор языка для шведского языка в соответствии с веб-сайтом, указанным в сценарии:
0x081D
что означает, что мы берем только последние 3 символа
81D
и префикс их с 5 нулями, например
0000081D
- После этого вы создаете файл * .exe с помощью вышеупомянутого приложения.
- Поместите исполняемый файл в папку автозапуска Windows 10
нажмите Win+R, затем введите
shell:startup
нажмите Enter и вы увидите папку - и все!