- - PR -
NumLockをかけた状態のテンキーを使用したホットキーを拾えない
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-11-10 17:15
色々やってみたのですが、どうにもならなくなったので教えてください。
環境 Vista、vs2005のC# Shift+Alt+数字キーを拾い処理を行う機能を作成しています。 ホットキーはSystem.Runtime.InteropServiceから RegisterHotKeyを使用して登録しています。 そして、WndProcをoverrideしてホットキーを拾っています。 数字キーとして3を使用する場合、以下の項目を登録しています。 ・Keys.D3 ・Keys.NumPad3(NumLockがかかっている場合) ・34(NumLockがかかっていない場合) ホットキーとしての登録結果は全て正常になりますが、 NumLockがかかっている場合のホットキーを拾うことができないのです。 (WndProcにひっかからない) 他のホットキーは問題なく拾えます。 何かご存知でしたら教えてください。 |
|
投稿日時: 2008-11-10 17:59
手元のキーボード二種類だと、どちらも Shift 押しながら Num1 押すと End の入力扱いになりますね。Shift+Control+Num1 だと Control+End 扱い。
Control.ModifierKeys でも Shift+Control+Num1 入力時は Control しか返しませんし、キーボードドライバ辺りがもう書き換えちゃってるんじゃないかな。 ところで、34 って言うと Keys.PageDown と同値ですが、PageDown を奪っちゃうのはいいんですか? |
|
投稿日時: 2008-11-10 18:16
回答ありがとうございます。
Shift+PgDnは問題なく使えます。 Shift+Altを使うことによって、他のショートカットとかぶらないようにしています。 (また、Endなど使うことがないので、使えなくなっても問題はないです。) NumLockをかけるとホットキーが反応しなくなることに困ってます。。。 何らかの形で、登録したホットキー一覧でも見られればいいのですが。。。 |
|
投稿日時: 2008-11-10 18:26
や、ですから、Shift+NumPad* は対応するキーの入力に変換されるので(ちなみに Shift+NumPad5 は Clear 相当だそうで)、Alt+End とかを RegisterHotKey すればとれるんじゃないですか?
// でもそれが立ち上がってるばっかりにエディタで Alt+End が使えなくなるのはやだなぁ |
|
投稿日時: 2008-11-10 18:44
すいません。
意味が分かりました。 そして、無事できました。ありがとうございます。 |
1