使用SendInput C#模拟键盘

时间:2015-06-03 13:31:39

标签: c# directx sendinput

我尝试使用此代码模拟键盘上的键进行直接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)));
}

问题是,这不会模拟密钥。关键是没有按下。

1 个答案:

答案 0 :(得分:2)

您需要发送KEYEVENTF_KEYDOWN然后发送KEYEVENTF_KEYUP事件,以便游戏正确处理关键事件。

在发送关键事件之间稍微停顿一下。

如果游戏轮询了密钥,则需要这样做,然后有时间识别按下的密钥。