我一直在使用IShellLink界面,并对如何映射热键组合感到困惑。
当仅应用单个热键时,返回值对应于记录的虚拟键代码;例如 F5 == 0x74
然而,当使用组合时,返回一个我没有解密的无证值;例如 CTRL + ALT + A == 0x641
使用什么操作来组合多个虚拟键码?
答案 0 :(得分: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
因此,当您将 CTRL 和 ALT 标志带到单词的高位字节并组合它们时,您得到的0x0200 | 0x0400
等于{ {1}}。将此与 A 的虚拟键码相结合,即0x0600
,你的魔法常量为0x41
。
答案 1 :(得分:1)
来自MSDN上的IShellLink::GetHotkey:
键盘快捷键的地址。虚拟键码在 低位字节,修饰符标志位于高位字节。该 修饰符标志可以是以下值的组合。
HOTKEYF_ALT
HOTKEYF_CONTROL
HOTKEYF_EXT
HOTKEYF_SHIFT
您可以使用传统的LOBYTE,HIBYTE和MAKEWORD宏来读/写...