- PR -

NumLockをかけた状態のテンキーを使用したホットキーを拾えない

1
投稿者投稿内容
シロ
常連さん
会議室デビュー日: 2005/05/15
投稿数: 34
投稿日時: 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にひっかからない)
他のホットキーは問題なく拾えます。

何かご存知でしたら教えてください。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2008-11-10 17:59
手元のキーボード二種類だと、どちらも Shift 押しながら Num1 押すと End の入力扱いになりますね。Shift+Control+Num1 だと Control+End 扱い。
Control.ModifierKeys でも Shift+Control+Num1 入力時は Control しか返しませんし、キーボードドライバ辺りがもう書き換えちゃってるんじゃないかな。

ところで、34 って言うと Keys.PageDown と同値ですが、PageDown を奪っちゃうのはいいんですか?
シロ
常連さん
会議室デビュー日: 2005/05/15
投稿数: 34
投稿日時: 2008-11-10 18:16
回答ありがとうございます。

Shift+PgDnは問題なく使えます。
Shift+Altを使うことによって、他のショートカットとかぶらないようにしています。
(また、Endなど使うことがないので、使えなくなっても問題はないです。)

NumLockをかけるとホットキーが反応しなくなることに困ってます。。。
何らかの形で、登録したホットキー一覧でも見られればいいのですが。。。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2008-11-10 18:26
や、ですから、Shift+NumPad* は対応するキーの入力に変換されるので(ちなみに Shift+NumPad5 は Clear 相当だそうで)、Alt+End とかを RegisterHotKey すればとれるんじゃないですか?

// でもそれが立ち上がってるばっかりにエディタで Alt+End が使えなくなるのはやだなぁ
シロ
常連さん
会議室デビュー日: 2005/05/15
投稿数: 34
投稿日時: 2008-11-10 18:44
すいません。
意味が分かりました。
そして、無事できました。ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)