2012-05-03 15 views
3

で変化する言語を無効にします。ブロックALT +シフトイベントまたは私はC++、または変更する言語をブロックするいくつかの方法を使用して<kbd>ALT</kbd> + <kbd>シフトに</kbd>キーイベントをブロックするために必要なプログラミング方法

ありがとうございます。

+0

は、Windowsについて話していますか?その場合は、適切なタグを追加します。 – Shahbaz

+4

これを行うと、ユーザーは情熱をもってあなたを憎むでしょう。あなたはそれをしてもよろしいですか? – SigTerm

+1

はい。やった。おかげで –

答えて

6

少し違っています。私は起動時に現在のlangaugeの設定を希望のものに変更するよりも捕捉します。

alt + shiftの場合でも、希望のタイプに戻すだけです。

ネットフレームワークで行うのは簡単です。ここで

言語を操作する程度の短い記事です:msdna上How to change input language programmatically

そしてメインクラス:InputLanguage documentation

実際にあなたがフックでプレイしなければならないWindowsシステムに移動するALT +シフトを防ぐために。ここで

は、記事についてblocking keystrokes before windows process them.

3

単なるアイデアです。 WM_KEYDOWNメッセージをキャッチし、ActivateKeyboardLayoutに電話をかけて言語を切り替えることができます。

+0

VNCクライアントを展開するには、言語の変更を探して、再度変更します。 – Ben

1

1はhereとフィルタ(伝播しない/飲み込む)キー(s)はあなたが禁止したいが示唆されたようにあなたは、キーボードのフックプロシージャをインストールすることができ、C++を使用しています。

1

MSDNを理解すると、WM_INPUTLANGCHANGEREQUESTを処理して何もしないので、Windowsはそれ以上のことを行わず、言語は実際には変更されません。しかし、ユーザーの中にはそれ以上は機能しないと言うユーザーもいます。 http://msdn.microsoft.com/en-us/library/ms632630(VS.85).aspx

たぶん、あなたはITfInputProcessorProfileActivationSink::OnActivatedを実装することができ、あなたが呼び出されるとき、あなたはITfInputProcessorProfiles::ActivateLanguageProfileを呼び出すことにより、以前の言語に戻って変更することができます。あなたのアプリの冒頭でITfInputProcessorProfiles::GetActiveLanguageProfileと呼ぶでしょう。

たぶん、あなたはFALSEから*pfAccept を設定し、S_OKを返し、ITfLanguageProfileNotifySink::OnLanguageChangeを実装することができます。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms628770(v=vs.85).aspx

上記のすべてに問題があります。ユーザーが意図的にクライアント上の言語を変更した場合(Alt + Shiftキーを押すのではなく、クライアントのタスクバーをクリックするなど)、上記の方法では変更ができなくなります。

システムがすでに定義されているにもかかわらず、RegisterHotKeyが自分のウィンドウにAlt + Shiftを登録できるのだろうかと思います。

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-for-the-children

希望。

敬具、
ボー

関連する問題