我需要一些关于 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]));
}
这是我的代码和我的问题:当我使用 Send_Key_Hold 时,它只在游戏中按下一个键,而其他组合键没有按下,因为我认为第一个键被按住。当我同时使用 Send_Key_Hold 和 Send_Key_Release 时,它不会在游戏中按下任何按钮。但是在桌面上(我的意思是任何其他应用程序不是游戏)它按下键。