次の3つの言語で入力します。
言語A-55%の確率で
言語B-40%の確率で
言語C-5%の確率で
通常の解決策は、3つの言語すべてをインストールし、Ctrl / Alt-Shiftを使用することですが、AとBを切り替えるたびに言語Cを切り替える必要があるのは非常に面倒です。
Ctrl / Alt-Shiftを押したときにWindowsが言語Cに切り替わらないようにする何らかの解決策はありますか?次に、言語Cに切り替えるための別のホットキーを追加できます。
私はWindows7SP1を使用しています。
ありがとうございました。
キーボード言語を切り替えるときに、「スキップ」言語「C」のAutoitスクリプトを作成できます。
AutoitとEditorをインストールした後。デスクトップ->新規-> Autoitスクリプトを右クリックします。この作成されたファイルを右クリック->編集。これでScITEウィンドウが表示され、「ここにコードを追加」の行の後に次のコードを追加します。
#include <WinAPISys.au3>
ClipPut(_WinAPI_GetKeyboardLayout(ControlGetHandle("[ACTIVE]","","")))
現在の言語が「C」になるまでShift + Alt(またはキーボード言語の切り替えに登録されているホットキー)を押します(キーボード言語名がタスクバーに表示されない場合は、Win + R->> CTFMON.EXE->> Enterを押します)。 ScITEウィンドウで[ツール]-> [移動]を押します。クリップボードの言語「C」コードになりました。貼り付け(CTRL + V)してどこかに保存します。
前のコードを削除して、これを貼り付けます。
#include <WindowsConstants.au3> #include <WinAPISys.au3> #include <String.au3> #NoTrayIcon $ skiplang = " 0x04090409 ";言語を切り替えるときにこの言語をスキップ $ list = _WinAPI_GetKeyboardLayoutList() $ fakeforwardlang = "" If IsArray( $ list)次に 、$ list [0] <3の場合、終了します。you potato For $ i = 1 To $ list [0] if $ list [$ i] = $ skiplang Then; Else EndIf $ fakeforwardlang = StringMid($ fakeforwardlang、1,6) while 1 $ handle = ControlGetHandle( "[ACTIVE]"、 ""、 "") if getcurkb($ handle)= $ skiplang then _WinAPI_SetKeyboardLayout($ handle、$ fakeforwardlang) Sleep(100) wend Func getcurkb($ handle) Return _WinAPI_GetKeyboardLayout($ handle) EndFunc
次のステップでは、このスクリプト(5行)で保存された言語「C」コードを0x04090409に置き換える必要があります。
次に、SciTEウィンドウで[ツール]-> [ビルド]を押します。これで、Autoitスクリプトがあったのと同じディレクトリに実行可能ファイルが表示されます。この実行可能ファイル(.exe)を実行します。
スクリプトを停止する場合は、強制終了プロセスにタスクマネージャーを使用する必要があります。
3つのキーボード言語と無効なUACを備えたWindows7で動作します。
更新:
私は台無しにします。_WinAPI_SetKeyboardLayout転送はたまにしか機能しません。{down}キーを押すと、標準で非常にバグが発生します。外部機能に基づく現在のソリューション。しかし、この機能の1つの問題は、次のキーボード言語に切り替えるためにShiftキーとAltキーを押す必要があります。後でコードを再確認する必要があります。
Update2:
_WinAPI_SetKeyboardLayoutに戻りますが、フェイクフォワードを使用します。現在、問題は見つかりません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加