我需要一些关于DirectInput的帮助,我会告诉我想要做什么.当我只按一个键时,我想让我的程序向游戏发送键组合.例子:我将按"r",它将按"1","3","2","4"键.我从这里找到了一些代码.但他们并没有完全奏效.
public static void Send_Key_Hold(short Keycode)
{
INPUT[] InputData = new INPUT[1];
InputData[0].type = 1;
InputData[0].ki.wScan = Keycode;
InputData[0].ki.dwFlags = (int)(KEYEVENTF_SCANCODE);
SendInput(1, InputData, Marshal.SizeOf(InputData[0]));
}
public static void Send_Key_Release(short Keycode)
{
INPUT[] InputData = new INPUT[1];
InputData[0].type = 1;
InputData[0].ki.wScan = Keycode;
InputData[0].ki.dwFlags = (int)(KEYEVENTF_KEYUP | KEYEVENTF_SCANCODE);
SendInput(1, InputData, Marshal.SizeOf(InputData[0]));
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码和我的问题:当我使用Send_Key_Hold时,它只按下游戏中的一个键并且没有按下其他组合键,因为我认为第一个键是持久的.当我一起使用Send_Key_Hold和Send_Key_Release时,它不会按下游戏上的任何按钮.但在桌面上(我的意思是任何其他应用程序而不是游戏)它按下键.