之前我在某个程序中需要改写其他程序的键盘按键的功能,采用的是 ==SendMessage== 这个系统API。
但是这个API无法发送方向键的数据,一直搞不懂原理。
之后就改用了 ==keybd_event== 这个API,可以正常发送方向键的数据。
留一个文档备份。
声明
Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As keyFlags, ByVal dwExtraInfo As UInteger)
Public Enum keyFlags
KeyDown = 0
EXTENDEDKEY = 1
KeyUp = 2
End Enum
调用方法
其中 bVk 参数可以通过.NET的 ==Keys== 枚举类型直接转换过来,但是必须要将其转换为 Byte 单字节才可以。
Dim b As Byte = CByte(Keys.W)
keybd_event(b, 0, keyFlags.KeyDown, 0)
keybd_event(b, 0, keyFlags.KeyUp, 0)