У меня есть простой кодНевозможно Имитировать Alt-Tab Virtual Key Press, отлично работает с другими клавишами
KEYBDINPUT k1 = { VK_MENU, 0, 0, 0, 0 };
KEYBDINPUT k2 = { VK_TAB, 0, 0, 0, 0 };
KEYBDINPUT k3 = { VK_TAB, 0, KEYEVENTF_KEYUP, 0, 0 };
KEYBDINPUT k4 = { VK_MENU, 0, KEYEVENTF_KEYUP, 0, 0 };
int cnt = 0;
while (cnt < 10)
{
Sleep(1000);
INPUT in1 = { INPUT_KEYBOARD };
in1.ki = k1;
SendInput(1, &in1, sizeof(INPUT));
INPUT in2 = { INPUT_KEYBOARD };
in2.ki = k2;
INPUT in3 = { INPUT_KEYBOARD };
in3.ki = k3;
SendInput(1, &in2, sizeof(INPUT));
SendInput(1, &in3, sizeof(INPUT));
cnt++;
}
INPUT in4 = { INPUT_KEYBOARD };
in4.ki = k4;
SendInput(1, &in4, sizeof(INPUT));
return 0;
Это не работает. Если я изменюсь с VK_TAB на VK_ESCAPE, это сработает.
Я хотел бы эмулировать Alt-Tab, поскольку Alt-Esc не имеет визуального представления. Есть ли что-то особенное в VK_TAB?
Вы пробовали передать SendInput массив с обоими событиями, а также проверить возвращаемое значение, чтобы увидеть, удалось ли вызов? –
@RetiredNinja yes, попробовали это. Возвращаемое значение равно 1 при отправке события независимо и равно 2 при отправке их в массив – Adorn
Передача '1' в качестве параметра' nInputs' для [SendInput] (https://msdn.microsoft. com/en-us/library/windows/desktop/ms646310.aspx) является олицетворением невежества: * «Эти события не чередуются с другими событиями ввода клавиатуры или мыши [...]» * – IInspectable