
Есть ли способ открыть виртуальную клавиатуру 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: