keybd_event,bScan参数的值为0x45。
0x45值是什么意思?
我的印象是0x45 was a keyboard scancode,但由于它用于不同数量的密钥,我对此不再那么肯定了。
我的目标是使用来自.NET P / Invoke或Delphi的keybd_event
,并使类型更具限制性(使用例如枚举或标记的枚举),以便我的代码变得更容易维护。
答案 0 :(得分:5)
它确实是一个扫描码,对于许多键盘来说,它是NumLock键的扫描码。
附加到keybd_event
文档的示例代码是如何切换NumLock状态的示例。因此,自然使用0x45作为扫描码。我的猜测是,您发现的许多其他示例只是盲目地复制keybd_event
MSDN示例中的值。由于applications typically ignore the scan code并且响应虚拟键代码,因此将扫描代码传递给什么值通常并不重要。
最后,您要使用SendInput
而不是keybd_event
。原因是前者允许您在队列中放置一系列事件。使用keybd_event
,您可以将事件一次放入队列中,并且您的伪造事件可能会散布在真实事件中。而这个问题是SendInput
被引入的主要原因之一。