我拥有 2 种以上的语言,因此,当按以下方式指定热键时,我发现工作起来很舒服:
- 英语 - Ctrl+1
- 德语 - Ctrl+2
- 瑞典语 - Ctrl+3
每次 Windows 重启时设置都会消失。
操作系统信息:Windows 10 64 位,版本 1803,操作系统内部版本 17134.48
由于某种原因,Windows 7 和 Windows 8 没有这个问题。
有人知道如何解决这个问题吗?
答案1
实际上,我已经找到了一种解决方法,可以完美地解决这个问题。
- 下载此免费实用程序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:启动
点击Enter后您就会看到该文件夹 - 就是它!