Windows 10 重启时语言热键被删除

Windows 10 重启时语言热键被删除

我拥有 2 种以上的语言,因此,当按以下方式指定热键时,我发现工作起来很舒服:

  • 英语 - Ctrl+1
  • 德语 - Ctrl+2
  • 瑞典语 - Ctrl+3

每次 Windows 重启时设置都会消失。

操作系统信息:Windows 10 64 位,版本 1803,操作系统内部版本 17134.48

由于某种原因,Windows 7 和 Windows 8 没有这个问题。

有人知道如何解决这个问题吗?

答案1

实际上,我已经找到了一种解决方法,可以完美地解决这个问题。

  1. 下载此免费实用程序https://autohotkey.com
  2. 创建 *.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
  1. 之后,使用上述应用程序创建一个 *.exe 文件
  2. 将可执行文件放入 Windows 10 自动启动文件夹

Win+R然后输入

shell:启动

点击Enter后您就会看到该文件夹​​ - 就是它!

相关内容