Можно ли открыть виртуальную клавиатуру на определенном языке в 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"ОС запускается с локалью конкретного пользователя.

Редактировать 2: После некоторых тестов я понял, что невозможно иметь отличную OSKот моей текущей локали, даже если она OSKзапускается от имени другого пользователя. Как только я нажимаю где-нибудь в OSKокне, она меняет раскладку клавиатуры на мою локаль.

Идея заключалась в том, чтобы OSKзапустить одну на русском языке, пока я работаю с немецкой раскладкой клавиатуры.

Поэтому наилучшим решением представляется использование AutohotKeyрешения, быстрое переключение на русский язык и затем обратно.


Частное замечание, связанное с SOhttps://stackoverflow.com/q/74829525/356726

решение1

Вам необходимо использовать сторонний инструмент.

Вы можете использовать бесплатноAutoHotkey.

Следующий пример скрипта переключит системный язык на заданный установленный язык и запустит экранную клавиатуру. Здесь F11будет установлен язык US-English, а 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 в трее и выбрав Exit. Чтобы он запускался при входе в систему, поместите его в группу Startup в
C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup.

Полезная документация по AutoHotkey:

Связанный контент