我尝试使用此代码模拟键盘上的键进行直接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)));
}
问题是,这不会模拟密钥。关键是没有按下。
答案 0 :(得分:2)
您需要发送KEYEVENTF_KEYDOWN
然后发送KEYEVENTF_KEYUP
事件,以便游戏正确处理关键事件。
在发送关键事件之间稍微停顿一下。
如果游戏轮询了密钥,则需要这样做,然后有时间识别按下的密钥。