keybd_event()如何查找bScan代码

时间:2017-07-10 14:35:20

标签: c++ winapi

我对第二个参数(bScan)有一些了解。

我的目标是为每个按钮找到合适的bScan代码。

   VOID WINAPI keybd_event(
  _In_ BYTE      bVk,
  _In_ BYTE      bScan,
  _In_ DWORD     dwFlags,
  _In_ ULONG_PTR dwExtraInfo
);

keybd_event function Microsoft

我已经读过键5的按钮有bScancode - 十六进制数:0x86。但我对如何找到bScan代码非常感兴趣。

KeyCode = '5' 
keybd_event(VkKeyScan(KeyCode), 0x86, 0, 0); // ‘5’ Press
keybd_event(VkKeyScan(KeyCode), 0x86, KEYEVENTF_KEYUP, 0); // ‘5’ Release

MapVirtualKey()函数看起来很有趣,但不幸的是我得到了5的输出。我想我误解了一些东西。有人会开导我吗?非常感谢你。

UINT scanCode = MapVirtualKey('5', MAPVK_VK_TO_VSC);

1 个答案:

答案 0 :(得分:0)

扫描代码取决于您的硬件。 5 / %通常为0x06,MapVirtualKey('5', MAPVK_VK_TO_VSC)确实在我的机器上返回0x06。

释放密钥时,顶部位(0x80)置位,因此5键的扫描码为0x06,密钥为0x86。