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