使用Many exampleskeybd_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的主要原因之一。

08-25 02:19