Windows で特定の言語の仮想キーボードを開くことはできますか?

Windows で特定の言語の仮想キーボードを開くことはできますか?

言語設定が英語またはドイツ語のときに、仮想 Windows キーボードをロシア語で開く方法はありますか?

現在の設定とは異なる言語でスクリプトやその他のショートカットを使用して仮想キーボードを開くことはできますか?この情報はここ(powershell、cmd)は使用できますoskが、言語を設定する機会がありません。


私は厄介な解決策を見つけました。https://superuser.com/a/922767/72397ロシア語ロケールでは別のユーザーを使用できます。

その後、このユーザーを使用して起動できますosk740: The requested operation requires elevationこの回避策を実行して、最初に別のユーザーを起動する必要があるためですcmdhttps://superuser.com/a/1134561/72397)。

したがって、runas /profile /savecred /user:"RUSSIAN USER" "cmd /c start osk"特定のユーザーのロケールで osk を起動します。

OSK編集 2: いくつかテストした後、別のユーザーとして実行している場合でも、現在のロケールとは異なるロケールを使用することはできないことがわかりました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 ドキュメント:

関連情報