为什么winapi函数需要扫描代码,尽管有键盘驱动程序



在msdn中,

typedef struct tagKEYBDINPUT {
WORD      wVk;
WORD      wScan;
DWORD     dwFlags;
DWORD     time;
ULONG_PTR dwExtraInfo;
} KEYBDINPUT, *PKEYBDINPUT, *LPKEYBDINPUT;

wVk
类型:WORD
虚拟密钥代码。该代码的值必须介于1到254之间。如果dwFlags成员指定KEYEVENTF_UNICODE,则wVk必须为0。

键盘驱动程序确实将虚拟键代码转换为扫描代码。但是为什么winapi函数需要扫描代码呢?是因为API直接告诉操作系统而不依赖键盘驱动程序吗?

下面的备注中解释了一个优点。

设置KEYEVENTF_SCACODE标志以根据扫描代码。这对于模拟物理击键很有用而不管当前正在使用哪个键盘。虚拟密钥键的值可能会根据当前键盘布局或按下了哪些其他键,但扫描代码将始终为相同的

最新更新