如何向 DirectX 的 DirectInput 检测输入的区域发送模拟的键盘信息?
1.目前几乎多有的游戏在控制区都是采用DirectInput来捕获键盘按键信息,如果想自己编写一个模拟键盘程序或者使用按键精灵脚本来控制游戏区的话,经过几次试验,证明是不可行的,DirectInput不能接受到模拟的按键信息,至于问题种为什么要说“区域”两个字,是因为在游戏的聊天区模拟按键信息是生效的。
目前已经测试对DirectInput无效的函数为:
A.Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
B.Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
C.Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
D.还有VB里面的 SendKeys 语句。
以上4种方法在游戏的聊天区是生效的。
因此构想,能否做到硬件级的键盘模拟事件呢?比如强行写键盘缓冲区?来使得 DirectInput 能接受到我们模拟的按键信息呢?
2.如果游戏区(聊天区是可以正常接受模拟事件的)已加入了硬件事件和上述4种软件模拟键盘事件的检测区分的话,又要如何才能骗过游戏使它能接收到我们的模拟按键信息呢?
鼠标模拟事件也是如此。
在此请教各位高手共同出谋划策。高分求助,可以另开贴奖分,虽然大家并不怎么看重奖分,但是还是要给的。