我可以在 Windows 中打开特定语言的虚拟键盘吗?

我可以在 Windows 中打开特定语言的虚拟键盘吗?

当我的语言设置是英语或德语时,有没有办法打开俄语虚拟 Windows 键盘?

我可以通过脚本或任何其他快捷方式以与当前设置不同的语言打开虚拟键盘吗?根据此处的信息我可以使用osk(powershell,cmd),但没有机会设置语言。


我找到了一个尴尬的解决方案。根据https://superuser.com/a/922767/72397我可以使用具有俄罗斯语言环境的不同用户。

然后我可以使用此用户启动osk。因为740: The requested operation requires elevation我需要先解决这个问题,然后再启动另一个cmd(请参阅https://superuser.com/a/1134561/72397)。

因此runas /profile /savecred /user:"RUSSIAN USER" "cmd /c start osk"使用该特定用户的语言环境启动 osk。

编辑 2:经过一些测试,我意识到即使以不同的用户身份运行,也不可能OSK与我当前的语言环境不同OSK。只要我单击窗口上的某个位置,OSK它就会将其键盘布局更改为我的语言环境。

OSK我的想法是,当我使用德国键盘布局时,让它以俄语运行。

因此,最好的解决方案似乎是使用该AutohotKey解决方案,快速更改为俄语然后再改回来。


私人评论,与 SO 相关https://stackoverflow.com/q/74829525/356726

答案1

您需要使用第三方工具。

您可以使用免费自动热键

以下示例脚本将系统语言切换为给定的安装语言并启动屏幕键盘。此处F11将语言设置为美国英语,而此处 F12将语言设置为法语标准。更多语言代码可在 Microsoft 文章中找到 语言代码

F11::SetDefaultKeyboard(0x0409) ; english-US
F12::SetDefaultKeyboard(0x040c) ; french

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%
    }
    Sleep, 100
    Run, C:\Windows\System32\osk.exe
}

安装 AutoHotKey 后,将上述文本放入一个.ahk文件中并双击进行测试。您可以通过右键单击托盘栏中的绿色 H 图标并选择退出来停止脚本。要让它在登录时运行,请将其放在 的启动组中
C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

有用的 AutoHotkey 文档:

相关内容