2017-09-14 9 views
2

でホットキーを登録:のWindows API - 例えば、私は簡単にShiftキー、Altキー(MODキー)と上矢印の組み合わせでホットキーに登録することができますので、複数のキーの組み合わせ

RegisterHotKey(NULL, TOP, MOD_SHIFT | MOD_ALT, VK_UP);

をこれだけの作品上のような同じキーでホットキーを登録していますが、左矢印のような別の通常のキーを追加すると、Shift、Alt、上矢印、左矢印の組み合わせになります。

は別の引数の関数内のスペースがない、と私は

VK_UP | VK_LEFT

のように上と左の矢印キーをビット単位をやっORために試してみました...が、それは働いていません。誰かがこの問題に遭遇した場合、または私がどのように進んでいくかを知っておいてください!

+0

ホットキーAPIを使用して行うことはできません。あなたのプライマリホットキーがトリガされたときに2番目のキーが押されている場合、 'GetKeyState'を使ってチェックを試みることができますが、ユーザが2つのキーを"間違った "順序で押した場合、 –

+2

私のプログラムでは、ショートカットの1つとしてShift + Alt + Upが使用されています。あなたのプログラムは私のプログラムを破っただけです。言い換えれば、グローバルホットキーは、キオスク状況でのみ適切です。あなたがそれらを必要としない状況です。 –

+0

@DavidHeffernan私はすでに使用中のホットキーを登録しようとするとRegisterHotkey(...)が動作しないと思います。 –

答えて

1

Windowsのホットキーは、複数の(修飾子ではない)キーをサポートしていません。ビット単位または複数のVK_*の値は使用できません。MOD_*値のみを組み合わせることができます。

この機能が必要な場合は、low-level keyboard hookを使用して、自分でキーを追跡する必要があります。フックはグローバルシステムのパフォーマンスに影響を与え、可能な場合は避けるべきです。

あなたがWindowsユーザーが押すホットキーにこの方法を使用していないことを覚えておく必要があり、これを行うことを決定した場合、唯一のメニューはやや似たパターンを許可していますが、これらの仕事をするためにAltキー修飾子を保持する必要はありません。また、StickyKeysとその他のアクセシビリティ機能を使用してフックをテストすることを覚えておく必要があります。

関連する問題