我一直在玩 IShellLink 界面,并且对热键组合的映射方式感到困惑。
仅应用单个热键时,返回值对应于文档中的虚拟键代码;例如F5 == 0x74
但是,当使用组合时,会返回一个我无法破译的未记录值;例如CTRL + ALT + A == 0x641
组合多个虚拟键码用什么操作?
我一直在玩 IShellLink 界面,并且对热键组合的映射方式感到困惑。
仅应用单个热键时,返回值对应于文档中的虚拟键代码;例如F5 == 0x74
但是,当使用组合时,会返回一个我无法破译的未记录值;例如CTRL + ALT + A == 0x641
组合多个虚拟键码用什么操作?
这在以下文档中进行了解释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 | 0x0400
which equals 0x0600
。A将其与is的虚拟键代码结合起来,0x41
您的魔法常数为0x0641
.
来自MSDN 上的IShellLink::GetHotkey:
键盘快捷键的地址。虚拟键码在低字节,修饰标志在高字节。修饰符标志可以是以下值的组合。
热键F_ALT
热键F_CONTROL
热键F_EXT
热键F_SHIFT
您可以使用传统的LOBYTE、 HIBYTE 和 MAKEWORD 宏来读/写...