Я внес небольшое изменение в ваш код (на это указывает Андреас), чтобы последовательно запускать события, как это сделал бы настоящий пользователь. Я использовал Chrome для цели, поместив мышь в любом месте окна. Похоже, по крайней мере на моем компьютере, WM_XBUTTONDOWN, за которым следует сообщение WM_XBUTTONUP, активирует кнопку возврата независимо от того, где находится мышь. Я также использовал Spy ++, чтобы убедиться, что это генерируемые сообщения. При указании 0,0 запускается событие в последней известной позиции мыши. Поскольку это кнопка X, вы должны найти приложение, которое реагирует на это событие, чтобы увидеть, что оно работает, или использовать Spy ++ или аналогичный инструмент, чтобы увидеть, что оно запускается. Вот код, который я использовал.
#include<iostream>
#include<Windows.h>
void clickMouse()
{
INPUT event;
MOUSEINPUT mouseInput[] =
{
{
0,
0,
XBUTTON1,
(MOUSEEVENTF_XDOWN),
0,
NULL
},
{
0,
0,
XBUTTON1,
(MOUSEEVENTF_XUP),
0,
NULL
}};
event.type = INPUT_MOUSE;
event.mi = mouseInput[0];
SendInput(1, &event, sizeof(INPUT));
event.mi = mouseInput[1];
SendInput(1, &event, sizeof(INPUT));
}
int main()
{
bool buttonPressed = false;
while (true)
{
if (!buttonPressed && (GetKeyState(VK_CONTROL) >> 15))
{
clickMouse();
buttonPressed = true;
}
else if (buttonPressed && !(GetKeyState(VK_CONTROL) >> 15))
{
buttonPressed = false;
}
}
}