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

因此,当您将CTRLandALT标志带到单词的高位字节并将它们组合起来时,您会得到0x0200 | 0x0400which equals 0x0600A将其与is的虚拟键代码结合起来,0x41您的魔法常数为0x0641.

于 2012-05-22T20:23:08.090 回答
1

来自MSDN 上的IShellLink::GetHotkey

键盘快捷键的地址。虚拟键码在低字节,修饰标志在高字节。修饰符标志可以是以下值的组合。

热键F_ALT

热键F_CONTROL

热键F_EXT

热键F_SHIFT

您可以使用传统的LOBYTE、 HIBYTE 和 MAKEWORD 宏来读/写...

于 2012-05-22T20:24:24.363 回答