使用 SendInput C# 模拟键盘

Simulating Keyboard with SendInput C#

我尝试使用以下代码为直接 x 游戏模拟键盘上的按键:

public static void Send(short Keycode)
{
    INPUT[] InputData = new INPUT[1];

    InputData[0].type = 1;
    InputData[0].ki.wScan = Keycode;
    InputData[0].ki.dwFlags = KEYEVENTF_KEYUP | KEYEVENTF_SCANCODE;
    InputData[0].ki.time = 0;
    InputData[0].ki.dwExtraInfo = IntPtr.Zero;

    SendInput(1, InputData, Marshal.SizeOf(typeof(INPUT)));
}

问题是,这并没有模拟密钥。键没有被按下。

您需要先发送一个 KEYEVENTF_KEYDOWN 事件,然后再发送一个 KEYEVENTF_KEYUP 事件,游戏才能正确处理按键事件。

在发送按键事件之间稍作停顿。

如果游戏正在轮询按键,则需要这样做,这样它就有时间识别按下的按键。