2

私はIShellLinkインターフェイスで遊んでいますが、ホットキーの組み合わせがどのようにマッピングされるかについて混乱しています。

単一のホットキーのみが適用される場合、戻り値は文書化された仮想キーコードに対応します。例:F5 == 0x74

ただし、組み合わせを使用すると、解読に問題があるという文書化されていない値が返されます。例:CTRL + ALT + A == 0x641

複数の仮想キーコードを組み合わせるためにどのような操作が使用されますか?

4

2 に答える 2

6

これは、次のドキュメントで説明されていますIShellLink::GetHotkey

仮想キーコードは下位バイトにあり、修飾子フラグは上位バイトにあります。修飾子フラグは、次の値の組み合わせにすることができます。

  • HOTKEYF_ALT(ALTキー)
  • HOTKEYF_CONTROL(CTRLキー)
  • HOTKEYF_EXT(拡張キー)
  • HOTKEYF_SHIFT(Shiftキー)

これらのフラグは次のように定義されています。

#define HOTKEYF_SHIFT           0x01
#define HOTKEYF_CONTROL         0x02
#define HOTKEYF_ALT             0x04
#define HOTKEYF_EXT             0x08

したがって、フラグCTRLALTフラグを単語の上位バイトに持っていき、それらを組み合わせると、0x0200 | 0x0400に等しいが得られます0x0600Aこれをである仮想キーコードと組み合わせると0x41、魔法の定数は。になります0x0641

于 2012-05-22T20:23:08.090 に答える
1

MSDNのIShellLink::GetHotkeyから:

キーボードショートカットのアドレス。仮想キーコードは下位バイトにあり、修飾子フラグは上位バイトにあります。修飾子フラグは、次の値の組み合わせにすることができます。

HOTKEYF_ALT

HOTKEYF_CONTROL

HOTKEYF_EXT

HOTKEYF_SHIFT

従来のLOBYTE、HIBYTE、およびMAKEWORDマクロを使用して読み取り/書き込みを行うことができます...

于 2012-05-22T20:24:24.363 に答える