使用 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
事件,游戏才能正确处理按键事件。
在发送按键事件之间稍作停顿。
如果游戏正在轮询按键,则需要这样做,这样它就有时间识别按下的按键。
我尝试使用以下代码为直接 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
事件,游戏才能正确处理按键事件。
在发送按键事件之间稍作停顿。
如果游戏正在轮询按键,则需要这样做,这样它就有时间识别按下的按键。