Я использую следующий код для отправки нажатий клавиш в Windows:
[DllImport("user32.dll", SetLastError = true)]
private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key down flag
public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event((byte)key, 0, KEYEVENTF_KEYUP, 0);
«ключ» может быть любым кодом клавиши.Простые, такие как символ или функциональные клавиши и т. Д.
Это прекрасно работает в «простом» приложении.Например, если я открываю NotePad ++ и моя Программа запускается в фоновом режиме, все работает как нужно.
Но когда я открываю полноэкранную игру (например, Pinball FX), нажатия клавиш, кажется, не получаются.
Я ожидаю, что проблема заключается в DirectX или чем-то подобном.Есть ли другой способ отправить ключи туда?Может быть через SharpDX?