3

altC ++を使用して+shiftキーイベントをブロックするか、言語の変更をブロックする方法が必要です。

前もって感謝します。

4

5 に答える 5

6

私はそれについて少し違ったやり方をします。必要な設定に変更するよりも、起動時に現在の言語設定をキャッチします。

alt+shift のイベントで、もう一度目的のタイプに戻すだけです。

ネットフレームワークを使用すると、非常に簡単に実行できるはずです。

言語の操作に関する短い記事を次に示します。入力言語をプログラムで変更する方法

msdna のメイン クラス: InputLanguage ドキュメント

Alt+Shift が Windows システムに移動するのを実際に防ぐには、フックをいじる必要があります。

これは、 Windows がキーストロークを処理する前にキーストロークをブロックすることに関する記事です。

于 2012-05-15T09:46:44.307 に答える
3

ただのアイデア。メッセージをキャッチし、 ActivateKeyboardLayoutWM_KEYDOWNを呼び出して言語を切り替えることができます。

于 2012-05-10T08:49:12.433 に答える
1

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_OKhttp://msdn.microsoft.com/en-us/library/windows/desktop/ms628770(v=vs.85).aspx

上記のすべてに問題があります。ユーザーがクライアントの言語を意図的に変更した場合 (たとえば、Alt+Shift キーを押す代わりにクライアントのタスク バーをクリックするなど)、上記の方法ではいずれにしても言語の変更が妨げられます。

RegisterHotKeyシステムで既に定義されている場合でも、独自のウィンドウに Alt+Shift を登録できるかどうか疑問に思います。

于 2012-05-16T06:28:53.070 に答える
1

C++ を使用すると、ここで提案されているようなキーボード フック プロシージャをインストールし、禁止するキーをフィルター処理 (飲み込む/伝達しない) できます。

于 2012-05-16T05:39:22.727 に答える
0

実装しようとしているのはキーボードフックです。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-子供たちにとって

お役に立てれば。

敬具、
ボー

于 2012-05-17T08:02:07.243 に答える