Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi keybd_事件中bScan参数值0x45的含义是什么?_Delphi_Winapi_Pinvoke - Fatal编程技术网

Delphi keybd_事件中bScan参数值0x45的含义是什么?

Delphi keybd_事件中bScan参数值0x45的含义是什么?,delphi,winapi,pinvoke,Delphi,Winapi,Pinvoke,如果使用,则bScan参数的值为0x45 0x45值的含义是什么 我有这样的印象,但由于它被用于各种各样的钥匙,我不再那么肯定了 我的目标是使用.NET p/Invoke或Delphi中的keybd_event,并使类型更加严格(例如使用枚举或标记的枚举),以便我的代码更易于维护。它确实是一个扫描代码,对于许多键盘来说,它是NumLock键的扫描代码 keybd_event文档中附带的示例代码是如何切换NumLock状态的示例。因此,0x45自然被用作扫描代码。我的猜测是,您发现的许多其他示例只

如果使用,则bScan参数的值为0x45

0x45值的含义是什么

我有这样的印象,但由于它被用于各种各样的钥匙,我不再那么肯定了


我的目标是使用.NET p/Invoke或Delphi中的
keybd_event
,并使类型更加严格(例如使用枚举或标记的枚举),以便我的代码更易于维护。

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

keybd_event
文档中附带的示例代码是如何切换NumLock状态的示例。因此,0x45自然被用作扫描代码。我的猜测是,您发现的许多其他示例只是盲目地复制了
keybd_事件中的值。由于和响应虚拟密钥代码,所以通常不关心作为扫描代码传递的值


最后,您需要使用
SendInput
而不是
keybd\u事件
。原因是前者允许您在队列中放置一系列事件。使用
keybd_event
将事件一次一个地放入队列中,您的伪造事件可能会与真实事件混杂在一起。这个问题是引入
SendInput
的主要原因之一。

Delphi忽略扫描代码信息,例如在生成
OnKeyDown
事件时。如果有人需要提取密钥扫描代码,他应该直接处理相应的windows消息(例如WM_KEYDOWN)。谢谢。我给你打一针。稍后我们会回来的。