Я пытаюсь использовать SendInput для отправки нажатий клавиш. Код работает, например, если я пытаюсь отправить ключ A, но если я пытаюсь нажать клавишу со стрелкой вправо, он набирает 6. Понятия не имею, почему.
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);
[DllImport("user32.dll")]
internal static extern uint SendInput(
uint nInputs,
[MarshalAs(UnmanagedType.LPArray), In] INPUT[] pInputs,
int cbSize);
private void button1_Click(object sender, EventArgs e)
{
SetForegroundWindow(FindWindow("Notepad", "Untitled - Notepad"));
SendInputWithAPI();
}
void SendInputWithAPI()
{
INPUT[] Inputs = new INPUT[1];
INPUT Input = new INPUT();
Input.type = 1; // 1 = Keyboard Input
Input.U.ki.wScan = ScanCodeShort.RIGHT;
Input.U.ki.dwFlags = KEYEVENTF.SCANCODE;
Inputs[0] = Input;
SendInput(1, Inputs, INPUT.Size);
}
Кстати ScanCodeShort.RIGHT возвращает 77.
Спасибо.