Эмуляция нажатия клавиши в игре - C# (234054)
Формулировка задачи:
Нужно нажать клавишу программно в игре. Sendmessage,sendkeys или keybd_event в игре не работает-отправляет только в приложения windows(блокнот,калькулятор итд...). Пытался найти что то в Directinput , но нашёл только проверку нажатия,а мне нужно отослать.Подскажите как это сделать,желательно на примере.Можно это как то сделать напрямую через драйвер?
Решение задачи: «Эмуляция нажатия клавиши в игре»
textual
Листинг программы
public struct KEYBOARDINPUT
{
public uint type;
public ushort wVk;
ushort wScan;
public uint dwFlags;
uint time;
uint dwExtraInfo;
uint unused1;
uint unused2;
}
public const uint INPUT_KEYBOARD = 1;
public const uint KEYEVENTF_KEYUP = 2;
public const ushort VK_TAB = 0x0053;// sS
public const ushort VK_SHIFT = 0x0010;
public const ushort VK_CTRL = 0x11;
public const ushort VK_V = 0x56;
public static void SetCtrlV()
{
KEYBOARDINPUT[] inputs;
inputs = new KEYBOARDINPUT[4];
inputs[0].type = inputs[1].type = inputs[2].type = inputs[3].type = INPUT_KEYBOARD;
inputs[0].wVk = inputs[3].wVk = VK_CTRL;
inputs[1].wVk = inputs[2].wVk = VK_V;
inputs[2].dwFlags = inputs[3].dwFlags = KEYEVENTF_KEYUP;
SendInput(4, inputs, 0x001C);
}
public static void SetV()
{
KEYBOARDINPUT[] inputs;
inputs = new KEYBOARDINPUT[2];
inputs[0].type = inputs[1].type = INPUT_KEYBOARD;
inputs[0].wVk = inputs[1].wVk = VK_V;
inputs[1].dwFlags = KEYEVENTF_KEYUP;
SendInput(2, inputs, 0x001C);
}