altC ++を使用して+shiftキーイベントをブロックするか、言語の変更をブロックする方法が必要です。
前もって感謝します。
私はそれについて少し違ったやり方をします。必要な設定に変更するよりも、起動時に現在の言語設定をキャッチします。
alt+shift のイベントで、もう一度目的のタイプに戻すだけです。
ネットフレームワークを使用すると、非常に簡単に実行できるはずです。
言語の操作に関する短い記事を次に示します。入力言語をプログラムで変更する方法
msdna のメイン クラス: InputLanguage ドキュメント
Alt+Shift が Windows システムに移動するのを実際に防ぐには、フックをいじる必要があります。
これは、 Windows がキーストロークを処理する前にキーストロークをブロックすることに関する記事です。
ただのアイデア。メッセージをキャッチし、 ActivateKeyboardLayoutWM_KEYDOWN
を呼び出して言語を切り替えることができます。
MSDN についての私の理解ではWM_INPUTLANGCHANGEREQUEST
、Windows がそれ以上何もせず、言語が実際に変更されないように、処理するふりをして何もしないことができます。しかし、一部のユーザーは、それはもう機能しないと言っています。
http://msdn.microsoft.com/en-us/library/ms632630(VS.85).aspx
を実装することもできITfInputProcessorProfileActivationSink::OnActivated
ますし、呼び出されたときに を呼び出すことで以前の言語に戻すことができますITfInputProcessorProfiles::ActivateLanguageProfile
。アプリの開始時に、 を呼び出しますITfInputProcessorProfiles::GetActiveLanguageProfile
。
ITfLanguageProfileNotifySink::OnLanguageChange
実装して、設定*pfAccept
してFALSE
、返すことができるかもしれませんS_OK
。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms628770(v=vs.85).aspx
上記のすべてに問題があります。ユーザーがクライアントの言語を意図的に変更した場合 (たとえば、Alt+Shift キーを押す代わりにクライアントのタスク バーをクリックするなど)、上記の方法ではいずれにしても言語の変更が妨げられます。
RegisterHotKey
システムで既に定義されている場合でも、独自のウィンドウに Alt+Shift を登録できるかどうか疑問に思います。
C++ を使用すると、ここで提案されているようなキーボード フック プロシージャをインストールし、禁止するキーをフィルター処理 (飲み込む/伝達しない) できます。
実装しようとしているのはキーボードフックです。C/C++ のソース コードによる詳細な説明は、http: //www.codeproject.com/Articles/67091/Mouse-and-KeyBoard-Hooking-utility-with-VCにあります。
他の役立つ例もここにあります:
http://www.codeproject.com/Articles/1264/KeyBoard-Hooks
http://www.codeproject.com/Articles/9513/Disable-keyboard-and-show-images-子供たちにとって
お役に立てれば。
敬具、
ボー