keybd_event函数⽤法
转⾃
键盘模拟技术是在编写游戏外挂时经常使⽤的技术。但是由于很多游戏采⽤了directinput的⽅式,使得发送的⼀般键盘消息⽆法被程序收到。这时候需要使⽤驱动级的键盘模拟技术,直接发送键盘的硬件扫描码,达到模拟键盘的⽬的。
⽬前⽹络上流⾏的做法是使⽤winio模拟键盘硬件扫描码,但是winio并不稳定,时常有严重错误发⽣。这⾥电王介绍⼀种稳定⽅便的⽅式——使⽤keybd_event函数,这种⽅法⾮常简单,⽽且极为稳定。
参阅MSDN,我们可以发现以下介绍:
VOID keybd_event(
BYTE bVk,          // virtual-key code
BYTE bScan,        // hardware scan code
DWORD dwFlags,      // flags specifying various function options
DWORD dwExtraInfo  // additional data associated with keystroke
);
Parameters
bVk
Specifies a virtual-key code. The code must be a value in the range 1 to 254.
onpaste不能用inputbScan
Specifies a hardware scan code for the key.
dwFlags
A set of flag bits that specify various aspects of function operation. An application can use any combination of the following predefined constant values to set the flags.
Value Meaning
KEYEVENTF_EXTENDEDKEY If specified, the scan code was preceded by a prefix byte having the value 0xE0 (224).
KEYEVENTF_KEYUP If specified, the key is being released. If not specified, the key is being depressed.
dwExtraInfo
Specifies an additional 32-bit value associated with the key stroke.
其中第⼆个参数 BYTE bScan 其实就是键盘的硬件扫描码。很多资料上都简单的把这个参数设为0,⽽使⽤第⼀个参数设置键盘的虚拟值,浪费了这个函数的功能。在使⽤这个函数时,只要把⼀参的虚拟值和⼆参的扫描码值设为对应的⼀个按键(注意,如果只设置⼀参⽽把⼆参设为0,很多使⽤directinput的游戏是不能响应的),就可令⽬前⼏乎所有游戏成功响应。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。