keybd_event中bScan参数值0x45的含义是什么?

时间:2013-02-25 08:09:03

标签: delphi winapi pinvoke

使用Many examples

keybd_event,bScan参数的值为0x45。

0x45值是什么意思?

我的印象是0x45 was a keyboard scancode,但由于它用于不同数量的密钥,我对此不再那么肯定了。

我的目标是使用来自.NET P / Invoke或Delphi的keybd_event,并使类型更具限制性(使用例如枚举或标记的枚举),以便我的代码变得更容易维护。

1 个答案:

答案 0 :(得分:5)

它确实是一个扫描码,对于许多键盘来说,它是NumLock键的扫描码。

附加到keybd_event文档的示例代码是如何切换NumLock状态的示例。因此,自然使用0x45作为扫描码。我的猜测是,您发现的许多其他示例只是盲目地复制keybd_event MSDN示例中的值。由于applications typically ignore the scan code并且响应虚拟键代码,因此将扫描代码传递给什么值通常并不重要。

最后,您要使用SendInput而不是keybd_event。原因是前者允许您在队列中放置一系列事件。使用keybd_event,您可以将事件一次放入队列中,并且您的伪造事件可能会散布在真实事件中。而这个问题是SendInput被引入的主要原因之一。