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